Maison > Article > interface Web > Comment réussir à télécharger des fichiers depuis votre application WebApi/MVC dans Angular2 ?
Dans votre application Angular2, vous avez rencontré des difficultés pour enregistrer les fichiers téléchargés depuis votre application WebApi / MVC. Examinons votre problème et proposons une solution.
Le code de votre composant, tel que fourni, utilise le constructeur Blob() pour créer un fichier à partir des données reçues. Cependant, vous rencontrez des difficultés avec la fonction URL.createObjectURL, qui n'est pas disponible dans les spécifications ECMAScript actuelles.
La solution découle de la nature des observables dans Angular2 . L'observable utilisé pour télécharger le fichier s'exécute dans un contexte différent, ce qui entraîne le problème que vous rencontrez. Pour résoudre ce problème, nous devons modifier le code pour nous abonner à l'observable et exécuter la logique de création et de sauvegarde de fichiers dans cet abonnement.
Une approche efficace consiste à refactoriser votre méthode downloadfile() pour vous abonner à l'observable en tant que suit :
downloadfile(type: string){ this.pservice.downloadfile(this.rundata.name, type) .subscribe(data => { this.downloadFile(data); // Call a separate function to handle file creation and saving }, error => console.log("Error downloading the file."), () => console.log('Completed file download.')); }
Dans cette méthode mise à jour, nous introduisons une nouvelle fonction downloadFile() qui est responsable de la création du fichier et du lancement du téléchargement.
downloadFile(data: Response) { const blob = new Blob([data], { type: "application/octet-stream" }); const url = window.URL.createObjectURL(blob); window.open(url); }
En vous abonnant à l'observable et en définissant la fonction downloadFile(), nous nous assurons que la création et l'enregistrement du fichier s'effectuent dans le contexte correct, vous permettant ainsi d'enregistrer et d'ouvrir avec succès le fichier téléchargé.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!