J'ai une application WebApi / MVC pour laquelle je développe un client angular2 (pour remplacer MVC). J'ai du mal à comprendre comment Angular enregistre un fichier.
La demande est correcte (fonctionne bien avec MVC, et nous pouvons enregistrer les données reçues) mais je ne peux pas comprendre comment enregistrer les données téléchargées (je suis principalement la même logique que dans cet article ). Je suis sûr que c'est stupidement simple, mais jusqu'à présent, je ne le saisis tout simplement pas.
Le code de la fonction du composant est ci-dessous. J'ai essayé différentes alternatives, la méthode blob devrait être la manière d'aller aussi loin que je l'ai compris, mais il n'y a pas de fonction createObjectURL
dans URL
. Je ne trouve même pas la définition de URL
dans window, mais apparemment, elle existe. Si j'utilise le FileSaver.js
module, j'obtiens la même erreur. Je suppose donc que c'est quelque chose qui a changé récemment ou qui n'est pas encore mis en œuvre. Comment puis-je déclencher l'enregistrement du fichier dans A2?
downloadfile(type: string){
let thefile = {};
this.pservice.downloadfile(this.rundata.name, type)
.subscribe(data => thefile = new Blob([data], { type: "application/octet-stream" }), //console.log(data),
error => console.log("Error downloading the file."),
() => console.log('Completed file download.'));
let url = window.URL.createObjectURL(thefile);
window.open(url);
}
Par souci d'exhaustivité, le service qui récupère les données est ci-dessous, mais la seule chose qu'il fait est d'émettre la requête et de transmettre les données sans mappage si elle réussit:
downloadfile(runname: string, type: string){
return this.authHttp.get( this.files_api + this.title +"/"+ runname + "/?file="+ type)
.catch(this.logAndPassOn);
}