Wie lade ich eine Datei mit Angular2 @ herunte

Ich habe eine WebApi / MVC-App, für die ich einen angle2-Client entwickle (um MVC zu ersetzen). Ich habe einige Probleme beim 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 verfolge meistens die gleiche Logik wie indieser Beitra). Ich bin mir sicher, dass es dumm ist, aber bis jetzt verstehe ich es einfach nicht.

Der Code der Komponentenfunktion ist unten angegeben. Ich habe verschiedene Alternativen ausprobiert, der Blob-Weg sollte der Weg sein, so weit ich verstanden habe, aber es gibt keine FunktioncreateObjectURL imURL. Ich kann nicht einmal die Definition von @ findURL im Fenster, aber anscheinend existiert es. Wenn ich das @ benutFileSaver.js module Ich bekomme 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);
}

er Vollständigkeit halber ist der Dienst, der die Daten abruft, unten aufgeführt, aber das einzige, was er tut, ist, die Anforderung abzusetzen und die Daten ohne Zuordnung weiterzuleiten, wenn dies erfolgreich is

downloadfile(runname: string, type: string){
   return this.authHttp.get( this.files_api + this.title +"/"+ runname + "/?file="+ type)
            .catch(this.logAndPassOn);
}

Antworten auf die Frage(38)

Ihre Antwort auf die Frage