Ich habe eine WebApi / MVC-App, für die ich einen angle2-Client entwickle (als Ersatz für MVC). Ich habe einige Probleme zu verstehen, wie Angular eine Datei speichert.
Die Anfrage ist in Ordnung (funktioniert gut mit MVC und wir können die empfangenen Daten protokollieren), aber ich kann nicht herausfinden, wie die heruntergeladenen Daten gespeichert werden sollen (ich folge größtenteils der gleichen Logik wie in diesem Beitrag ). Ich bin sicher, dass es dumm einfach ist, aber bis jetzt verstehe ich es einfach nicht.
Der Code der Komponentenfunktion ist unten. Ich habe verschiedene Alternativen ausprobiert, der Blob-Weg sollte der Weg sein, soweit ich verstanden habe, aber es gibt keine Funktion createObjectURL
in URL
. Ich kann nicht einmal die Definition von URL
in window finden, aber anscheinend existiert sie. Wenn ich das Modul benutzeFileSaver.js
erhalte ich den gleichen Fehler. Ich denke, dies hat sich kürzlich geändert oder ist noch nicht implementiert. Wie kann ich das Speichern der Datei in A2 auslösen?
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);
}
Der Vollständigkeit halber ist der Dienst, der die Daten abruft, unten aufgeführt. Das einzige, was er tut, ist, die Anforderung auszugeben und die Daten ohne Zuordnung weiterzuleiten, wenn dies erfolgreich ist:
downloadfile(runname: string, type: string){
return this.authHttp.get( this.files_api + this.title +"/"+ runname + "/?file="+ type)
.catch(this.logAndPassOn);
}