Sou iniciante no Angular, quero saber como criar a parte de upload do Angular 5 File , estou tentando encontrar algum tutorial ou documento, mas não vejo nada em lugar algum. Alguma ideia para isso? E eu tentei arquivos ng4, mas não está funcionando para o Angular 5
angular
typescript
core114
fonte
fonte
Choose File
upload de btn? Bdw em ambos os casos, você simplesmente carrega usando FormDataRespostas:
Aqui está um exemplo de trabalho para upload de arquivo para API:
Etapa 1: modelo HTML (file-upload.component.html)
Defina uma tag de entrada simples do tipo
file
. Inclua uma função em(change)
-event para manipular a escolha de arquivos.Etapa 2: Carregar manipulação no TypeScript (file-upload.component.ts)
Defina uma variável padrão para o arquivo selecionado.
Crie a função que você usa no
(change)
evento de sua tag de entrada de arquivo:Se você deseja lidar com a seleção de vários arquivos, pode iterar através dessa matriz de arquivos.
Agora crie a função de upload de arquivo chamando você file-upload.service:
Etapa 3: Serviço de Upload de Arquivos (file-upload.service.ts)
Ao fazer o upload de um arquivo via método POST, você deve usar
FormData
, pois assim pode adicionar um arquivo à solicitação http.Portanto, este é um exemplo de trabalho muito simples, que eu uso todos os dias no meu trabalho.
fonte
const invFormData: FormData = new FormData(); invFormData.append('invoiceAttachment', invoiceAttachment, invoiceAttachment.name); invFormData.append('invoiceInfo', JSON.stringify(invoiceInfo));
O controlador possui dois parâmetros correspondentes, mas tive que analisar o JSON no controlador. Meu controlador Core 2 não captaria automaticamente o modelo no parâmetro Meu design original era um modelo com uma propriedade de arquivo, mas não conseguia fazê-lo funcionarcreateContrat(fileToUpload: File, newContrat: Contrat): Observable<boolean> { let headers = new Headers(); const endpoint = Api.getUrl(Api.URLS.createContrat)); const formData: FormData =new FormData(); formData.append('fileKey', fileToUpload, FileToUpload.name); let body newContrat.gup(this.auth.getCurrentUser().token); return this.http .post(endpoint, formData, body) .map(() => { return true; }) }
Content-Disposition: form-data; name="fileKey"; filename="file.docx" Content-Type: application/octet-stream <file>
Dessa forma, eu implemento o upload de arquivo na API da web no projeto.
Eu compartilho para quem preocupação.
Passo a passo
API da Web do ASP.NET
Formulário HTML
Arquivo TS para usar API
TS de serviço
fonte
O método mais fácil e rápido é usar o ng2-upload de arquivos .
Instale o ng2-file-upload via npm.
npm i ng2-file-upload --save
No primeiro módulo de importação do seu módulo.
Marcação:
No seu componente ts:
É o uso mais simples disso. Para conhecer todo o poder disso, consulte a demonstração
fonte
Estou usando o Angular 5.2.11, gosto da solução fornecida por Gregor Doroschenko, no entanto, notei que o arquivo enviado é de zero bytes, tive que fazer uma pequena alteração para que funcionasse comigo.
As seguintes linhas (formData) não funcionaram para mim.
https://github.com/amitrke/ngrke/blob/master/src/app/services/fileupload.service.ts
fonte
Ok, como esse tópico aparece entre os primeiros resultados do google e para outros usuários que têm a mesma pergunta, não é necessário reiventar a roda, conforme indicado por trueboroda, existe a biblioteca ng2-file-upload que simplifica esse processo de upload de um arquivo. arquivo com angular 6 e 7, tudo o que você precisa fazer é:
Instale a CLI Angular mais recente
Em seguida, instale o rx-compat por questões de compatibilidade
Instale o ng2-file-upload
Importe a Diretiva FileSelectDirective em seu módulo.
No seu componente
Modelo
Para uma melhor compreensão, você pode verificar este link: Como fazer upload de um arquivo com Angular 6/7
fonte
Pessoalmente, estou fazendo isso usando ngx-material-file-input para o front-end e Firebase para o back-end. Mais precisamente, o armazenamento em C para Firebase para back-end combinado com o Cloud Firestore. Abaixo um exemplo, que limita o arquivo a não ter mais de 20 MB e aceita apenas determinadas extensões de arquivo. Também estou usando o Cloud Firestore para armazenar links para os arquivos enviados, mas você pode pular isso.
contact.component.html
contact.component.ts (parte do validador de tamanho)
contact.component.ts (parte do carregador de arquivos)
storage.rules
fonte
toString()
na declaração contactForm?toString()
é inútil, editei minha resposta. Para aqueles que ler este comentário, no final dofileUploader
no contact.component.ts eu tinha])].toString()})
. Agora é simples:])]})
.Temos que criar uma pasta "temp" na unidade C, esse código imprimirá o Json no console e salvará o arquivo carregado na pasta criada
fonte
Primeiro, você precisa configurar o HttpClient no seu projeto Angular.
Abra o arquivo src / app / app.module.ts, importe HttpClientModule e adicione-o à matriz de importações do módulo, da seguinte maneira:
Em seguida, gere um componente:
Em seguida, gere um serviço de upload:
Em seguida, abra o arquivo src / app / upload.service.ts da seguinte maneira:
Em seguida, abra o arquivo src / app / home / home.component.ts e comece adicionando as seguintes importações:
Em seguida, defina as variáveis fileUpload e files e injete UploadService da seguinte maneira:
Em seguida, defina o método uploadFile ():
Em seguida, defina o método uploadFiles () que pode ser usado para fazer upload de vários arquivos de imagem:
Em seguida, defina o método onClick ():
Em seguida, precisamos criar o modelo HTML da nossa interface de usuário para upload de imagens. Abra o arquivo src / app / home / home.component.html e adicione o seguinte conteúdo:
Confira este tutorial e este post
fonte
Exemplo completo de upload de arquivo usando Angular e nodejs (express)
Código HTML
Código de componente TS
Código Js do nó
controlador de API fileUpload
Carregar serviço usando multer
fonte
Tente isto
Instalar
Importar
Html
fonte
Em Angular 7/8/9
Link de origem
Usando o formulário de inicialização
Na classe Component
fonte