Sei que essa é uma pergunta muito geral, mas não consigo fazer upload de um arquivo no Angular 2. Tentei
1) http://valor-software.com/ng2-file-upload/ e
2) http://ng2-uploader.com/home
...mas falhou. Alguém enviou um arquivo no Angular? Qual método você usou? Como fazer isso? Se qualquer código de amostra ou link de demonstração for fornecido, será realmente apreciado.
angular
file-upload
angular2-http
heman123
fonte
fonte
headers.append('enctype', 'multipart/form-data');
(usei 'enctype' para substituir 'Content-Type'). Talvez isso dependa do código do lado do servidor. (ie api)A partir das respostas acima, crio isso com o Angular 5.x
Basta ligar
uploadFile(url, file).subscribe()
para acionar um uploadUse-o assim em seu componente
fonte
let params = new HttpParams(); let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'), }); const options = { headers: headers, params: params, reportProgress: true, };
Observable
eHttpEvent
podem ser totalmente omitidas se você estiver bem em usar a inferência de tipo para fornecer o tipo de retorno da funçãouploadFile()
!this.http.request()
já retorna um tipo deObservable<HttpEvent<{}>>
, portanto, se você der a solicitação para chamar um tipo genérico (ou sejathis.http.request<any>()
, toda a função funcionará com os tipos certos.input type="file" (change)="addFiles($event)" style="display: none" #file multiple> <button mat-raised-button color="primary" (click)="selectFile($event)">Upload File </button>
Graças a @Eswar. Este código funcionou perfeitamente para mim. Quero adicionar algumas coisas à solução:
Eu estava recebendo erro:
java.io.IOException: RESTEASY007550: Unable to get boundary for multipart
Para solucionar esse erro, você deve remover o "Content-Type" "multipart / form-data". Isso resolveu meu problema.
fonte
multipart/form-data; boundary=---------------------------186035562730765173675680113
. Consulte também stackoverflow.com/a/29697774/1475331 e github.com/angular/angular/issues/11819 .java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found"
que é semelhante ao seu, no entanto, quando removo oContent-Type
cabeçalho, recebo um 404 do back-end. Estamos usando Spring e Angular 2. Qualquer ajuda apreciada.Como o exemplo de código está um pouco desatualizado, pensei em compartilhar uma abordagem mais recente, usando o Angular 4.3 e a nova (e) API HttpClient, @ angular / common / http
fonte
No Angular 2+, é muito importante deixar o Tipo de Conteúdo vazio. Se você definir o 'Tipo de conteúdo' como 'dados de várias partes / formulário', o upload não funcionará!
upload.component.html
upload.component.ts
fonte
Eu usei a seguinte ferramenta de preparação com sucesso. Não tenho skin no jogo com o primeNg, apenas passando a minha sugestão.
http://www.primefaces.org/primeng/#/fileupload
fonte
Esta solução simples funcionou para mim: file-upload.component.html
E, em seguida, faça o upload no componente diretamente com XMLHttpRequest .
Se você estiver usando o dotnet core, o nome do parâmetro deve corresponder ao nome do campo from. arquivos neste caso:
Esta resposta é um plágio de http://blog.teamtreehouse.com/uploading-files-ajax
Editar : após o upload, é necessário limpar o upload do arquivo para que o usuário possa selecionar um novo arquivo. E, em vez de usar XMLHttpRequest, talvez seja melhor usar o fetch:
https://github.com/yonexbat/cran/blob/master/cranangularclient/src/app/file-upload/file-upload.component.ts
fonte
Este é um tutorial útil , como fazer upload de arquivo usando o ng2-file-upload e SEM ng2-file-upload.
Para mim, isso ajuda muito.
No momento, o tutorial contém alguns erros:
1- O cliente deve ter o mesmo URL de upload que um servidor, portanto, na
app.component.ts
linha de alteraçãoconst URL = 'http://localhost:8000/api/upload';
para
const URL = 'http://localhost:3000';
2- O servidor envia resposta como 'text / html', portanto, em
app.component.ts
mudançapara
fonte
Para carregar imagem com campos de formulário
No meu caso, eu precisava do .NET Web Api em C #
fonte
Hoje eu fui integrado ao ng2-file-upload pacote ao meu aplicativo angular 6. Era bem simples. Encontre o código de alto nível abaixo.
importar o NG2-file-upload módulo
app.module.ts
Importação de arquivo ts do componente FileUploader
app.component.ts
Tag de arquivo de adição de HTML do componente
app.component.html
Working Online stackblitz Link: https://ng2-file-upload-example.stackblitz.io
Exemplo de código Stackblitz: https://stackblitz.com/edit/ng2-file-upload-example
Link para documentação oficial https://valor-software.com/ng2-file-upload/
fonte
Tente não definir o
options
parâmetrothis.http.post(${this.apiEndPoint}, formData)
e verifique se você não está configurando
globalHeaders
na sua fábrica Http.fonte
Na forma mais simples, o código a seguir funciona no Angular 6/7
Aqui está a implementação completa
fonte
jspdf e Angular 8
Gero um pdf e quero fazer o upload do pdf com solicitação POST, é assim que faço (para maior clareza, excluo parte da camada de código e serviço)
fonte
Carreguei o arquivo usando referência. Nenhum pacote é necessário para fazer upload do arquivo dessa maneira.
// código a ser escrito no arquivo .ts
}
// código a ser gravado no arquivo service.ts
}
// código a ser escrito em html
fonte