HTTP
POST
メソッドを使用してファイルをダウンロードしています。ファイルのダウンロードが完了するまでエンドユーザーにダウンロードの進行状況を表示する別のメソッドを呼び出したいのですが。 reportProgress
でHttpClient
を使用する方法。
downfile(file: any): Observable<any> {
return this.http.post(this.url , app, {
responseType: "blob", reportProgress: true, headers: new HttpHeaders(
{ 'Content-Type': 'application/json' },
)
});
}
_reportProgress: true
_を使用して、HTTP
リクエストの進行状況を表示する必要があります。 _all events, including the progress of transfers
_を表示したい場合は、_observe: 'events'
_オプションも使用して、Observable
タイプHttpEvent
。次に、コンポーネントメソッド内のすべてのevents(DownloadProgress, Response..etc)
をキャッチできます。 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' },
)
});
}
_
次に、コンポーネントですべてのevents
を以下のようにキャッチできます。
_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。
appModuleにHttpClientModuleを追加する必要があります
まず、HttpRequestクラスのインスタンスを作成し、reportProgressオプションを使用して、リクエストオブジェクトを作成する必要があります。
詳細については、以下を参照してください。 https://alligator.io/angular/httpclient-intro/