Ich lade die Datei mit der Methode HTTP
POST
herunter. Ich möchte eine andere Methode aufrufen, um dem Endbenutzer den Download-Fortschritt anzuzeigen, bis der Dateidownload abgeschlossen ist. Verwendung von reportProgress
in HttpClient
hierfür.
downfile(file: any): Observable<any> {
return this.http.post(this.url , app, {
responseType: "blob", reportProgress: true, headers: new HttpHeaders(
{ 'Content-Type': 'application/json' },
)
});
}
Sie müssen reportProgress: true
verwenden, um den Fortschritt einer HTTP
Anfrage anzuzeigen. Wenn Sie all events, including the progress of transfers
sehen möchten, müssen Sie auch die Option observe: 'events'
Verwenden und eine Observable
vom Typ HttpEvent
. Dann können Sie alle events(DownloadProgress, Response..etc)
in der Komponentenmethode abfangen. Weitere Details finden Sie in Angular Official Documentation .
downfile(file: any): Observable<HttpEvent<any>>{
return this.http.post(this.url , app, {
responseType: "blob", reportProgress: true, observe: "events", headers: new HttpHeaders(
{ 'Content-Type': 'application/json' },
)
});
}
Dann können Sie in der Komponente alle events
wie unten abfangen.
this.myService.downfile(file)
.subscribe(event => {
if (event.type === HttpEventType.DownloadProgress) {
console.log("download progress");
}
if (event.type === HttpEventType.Response) {
console.log("donwload completed");
}
});
Find HttpEventTypes Here.
sie müssen HttpClientModule in Ihr AppModule einfügen
sie müssen zuerst ein Anforderungsobjekt erstellen, indem Sie eine Instanz der HttpRequest-Klasse erstellen und die Option reportProgress verwenden.
Weitere Informationen finden Sie unter: https://alligator.io/angular/httpclient-intro/