Wie Angular2 das Herunterladen von Dateien handhabt
In Angular2 und höher umfasst das Herunterladen einer Datei die Verwendung von Observables und Blobs zum Abrufen und Speichern der Daten. Lassen Sie uns ein bestimmtes Szenario untersuchen, in dem eine Angular-Anwendung eine Datei herunterlädt.
Verstehen des Problems
Ein Benutzer stößt auf ein Problem, wenn er die Dateidownload-Funktionalität in einem Angular2-Client für a implementiert WebApi/MVC-App. Sie haben die Anfrage korrekt eingerichtet, haben aber Schwierigkeiten zu verstehen, wie Angular das Speichern von Dateien verwaltet.
Die Lösung
Das Problem entsteht, weil das Observable ausgeführt wird, das den Dateidownload verwaltet in einem separaten Kontext. Dies führt dazu, dass anstelle des gewünschten Blobs ein leeres Objekt an die URL-Variable übergeben wird.
Um dieses Problem zu beheben, besteht die Lösung darin, das Observable so zu abonnieren, dass die Daten als Antwort direkt an eine bestimmte Funktion übergeben werden , wie zum Beispiel:
this._reportService.getReport().subscribe(data => this.downloadFile(data));
Innerhalb der downloadFile-Funktion wird das Blob mithilfe der Antwortdaten erstellt:
downloadFile(data: Response) { const blob = new Blob([data], { type: 'text/csv' }); const url = window.URL.createObjectURL(blob); window.open(url); }
Durch die getrennte Behandlung des Abonnements und der Blob-Erstellung wird der richtige Kontext hergestellt , um sicherzustellen, dass die URL-Variable den gewünschten Blob enthält.
Zusätzliche Überlegungen
Um ein erfolgreiches Öffnen der Datei sicherzustellen, ist es wichtig zu überprüfen, ob „rxjs/Rx“ vorhanden ist importiert:
import 'rxjs/Rx';
Diese Lösung behebt das Problem, indem sie den Kontext, in dem das Observable und die Blob-Erstellung stattfinden, richtig behandelt. Es ermöglicht Angular2-Anwendungen, Dateien effektiv herunterzuladen.
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien in Angular2 mithilfe von Observablen und Blobs herunter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!