Je sais que c'est une question très générale mais je ne parviens pas à télécharger un fichier dans Angular 2. J'ai essayé
1) http://valor-software.com/ng2-file-upload/ et
2) http://ng2-uploader.com/home
...mais a échoué. Quelqu'un a-t-il téléchargé un fichier dans Angular? Quelle méthode avez-vous utilisée? Comment faire cela? Si un exemple de code ou un lien de démonstration est fourni, il sera vraiment apprécié.
angular
file-upload
angular2-http
heman123
la source
la source
headers.append('enctype', 'multipart/form-data');
(utilisé «enctype» pour remplacer «Content-Type»). Cela dépend peut-être du code côté serveur. (ie api)À partir des réponses ci-dessus, je construis cela avec Angular 5.x
Appelez simplement
uploadFile(url, file).subscribe()
pour déclencher un téléchargementUtilisez-le comme ça dans votre composant
la source
let params = new HttpParams(); let headers = new HttpHeaders({ 'Authorization': 'Bearer ' + localStorage.getItem('accessToken'), }); const options = { headers: headers, params: params, reportProgress: true, };
Observable
etHttpEvent
pourraient être entièrement omises si vous êtes d'accord avec l'utilisation de l'inférence de type pour fournir le type de retour de la fonction pouruploadFile()
!this.http.request()
renvoie déjà un type deObservable<HttpEvent<{}>>
, donc si vous donnez à l'appel de requête un type générique (c'est-à-dire quethis.http.request<any>()
la fonction entière fonctionne simplement avec les bons types.input type="file" (change)="addFiles($event)" style="display: none" #file multiple> <button mat-raised-button color="primary" (click)="selectFile($event)">Upload File </button>
Merci à @Eswar. Ce code a parfaitement fonctionné pour moi. Je souhaite ajouter certaines choses à la solution:
J'obtenais une erreur:
java.io.IOException: RESTEASY007550: Unable to get boundary for multipart
Afin de résoudre cette erreur, vous devez supprimer le "type de contenu" "multipart / form-data". Cela a résolu mon problème.
la source
multipart/form-data; boundary=---------------------------186035562730765173675680113
. Voir également stackoverflow.com/a/29697774/1475331 et 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"
qui est similaire à la vôtre, mais lorsque je supprime l'en-Content-Type
tête, j'obtiens un 404 du backend à la place. Nous utilisons Spring et Angular 2. Toute aide appréciée.Comme l'exemple de code est un peu obsolète, j'ai pensé partager une approche plus récente, en utilisant Angular 4.3 et la nouvelle (er) HttpClient API, @ angular / common / http
la source
Dans Angular 2+, il est très important de laisser le Content-Type vide. Si vous définissez le 'Content-Type' sur 'multipart / form-data', le téléchargement ne fonctionnera pas!
upload.component.html
upload.component.ts
la source
J'ai utilisé l'outil suivant d'amorçage avec succès. Je n'ai pas de skin dans le jeu avec primeNg, je transmets simplement ma suggestion.
http://www.primefaces.org/primeng/#/fileupload
la source
Cette solution simple a fonctionné pour moi: file-upload.component.html
Et puis faites le téléchargement dans le composant directement avec XMLHttpRequest .
Si vous utilisez dotnet core, le nom du paramètre doit correspondre au nom du champ from. fichiers dans ce cas:
Cette réponse est un plagiate de http://blog.teamtreehouse.com/uploading-files-ajax
Modifier : Après le téléchargement, vous devez effacer le téléchargement de fichier afin que l'utilisateur puisse sélectionner un nouveau fichier. Et au lieu d'utiliser XMLHttpRequest, il est peut-être préférable d'utiliser fetch:
https://github.com/yonexbat/cran/blob/master/cranangularclient/src/app/file-upload/file-upload.component.ts
la source
Ceci est un tutoriel utile , comment télécharger un fichier en utilisant ng2-file-upload et SANS ng2-file-upload.
Pour moi, cela m'aide beaucoup.
Pour le moment, le didacticiel contient quelques erreurs:
1- Le client doit avoir la même URL de téléchargement qu'un serveur, donc dans la
app.component.ts
ligne de changementconst URL = 'http://localhost:8000/api/upload';
à
const URL = 'http://localhost:3000';
2- Le serveur envoie la réponse en tant que 'text / html', donc en
app.component.ts
changementà
la source
Pour télécharger une image avec des champs de formulaire
Dans mon cas, j'avais besoin de .NET Web Api en C #
la source
Aujourd'hui, j'ai intégré le package ng2-file-upload à mon application angular 6, c'était assez simple, veuillez trouver le code de haut niveau ci-dessous.
importer le -upload NG2 fichier Module
app.module.ts
Importation de fichier TS de composant FileUploader
app.component.ts
Balise d'ajout de fichier HTML du composant
app.component.html
Lien de stackblitz en ligne fonctionnant: https://ng2-file-upload-example.stackblitz.io
Exemple de code Stackblitz: https://stackblitz.com/edit/ng2-file-upload-example
Lien vers la documentation officielle https://valor-software.com/ng2-file-upload/
la source
Essayez de ne pas définir le
options
paramètrethis.http.post(${this.apiEndPoint}, formData)
et assurez-vous que vous ne configurez pas le
globalHeaders
dans votre usine Http.la source
Dans la forme la plus simple, le code suivant fonctionne dans Angular 6/7
Voici l' implémentation complète
la source
jspdf et Angular 8
Je génère un pdf et je veux télécharger le pdf avec la demande POST, voici comment je fais (pour plus de clarté, je supprime une partie du code et de la couche de service)
la source
J'ai téléchargé le fichier en utilisant la référence. Aucun package n'est requis pour télécharger le fichier de cette façon.
// code à écrire dans le fichier .ts
}
// code à écrire dans le fichier service.ts
}
// code à écrire en html
la source