如何在 angular 中使用 httpClient 下载大文件 (>1GB)?
How to download large files (>1GB) with httpClient in angular?
我正在研究 angular 11,它使用 httpClient 方法从服务器下载文件。这适用于小文件。但是对于大文件(大约 1GB),下载会花费很多时间,尽管几秒钟后我在 console.log(类似于 https://999.99.999.99:99999/DownloadFileServlet?filename=/tmp/ab/1607023356995.tar)中得到了 link。如果我点击这个 link,下载会立即开始,否则会花费很多时间。
这是我的代码:
this.downloads.download(this.downloadInfo.filePathName)
.subscribe(blob => {
saveAs(blob, 'new_file_name');
this.isContentLoading = false;
},
err => {
this.isContentLoading = false;
const message: LogMessage = {severity: Severity.ERROR, message: "Download not finished"};
this.logMessageService.log(message);
}
);
download(fileName: string): Observable<Blob> {
return this.https.get(`https://${this.environment.path}/ab/DownloadFileServlet?
filename=${fileName}`,
{
responseType: "blob",
withCredentials: true,
reportProgress: true
});
}
请分享我如何使用此方法高效下载大文件的经验。
因此,如果我不使用 httpClient,而是直接将下载 link 提供给 window.location.href,例如:
return window.location.href = https://${this.environment.path}/DownloadFileServlet?filename=${fileName}
下载开始得更快。虽然我确定这是否是正确的解决方案,但如果有更好的主意,我会很高兴。
我正在研究 angular 11,它使用 httpClient 方法从服务器下载文件。这适用于小文件。但是对于大文件(大约 1GB),下载会花费很多时间,尽管几秒钟后我在 console.log(类似于 https://999.99.999.99:99999/DownloadFileServlet?filename=/tmp/ab/1607023356995.tar)中得到了 link。如果我点击这个 link,下载会立即开始,否则会花费很多时间。
这是我的代码:
this.downloads.download(this.downloadInfo.filePathName)
.subscribe(blob => {
saveAs(blob, 'new_file_name');
this.isContentLoading = false;
},
err => {
this.isContentLoading = false;
const message: LogMessage = {severity: Severity.ERROR, message: "Download not finished"};
this.logMessageService.log(message);
}
);
download(fileName: string): Observable<Blob> {
return this.https.get(`https://${this.environment.path}/ab/DownloadFileServlet?
filename=${fileName}`,
{
responseType: "blob",
withCredentials: true,
reportProgress: true
});
}
请分享我如何使用此方法高效下载大文件的经验。
因此,如果我不使用 httpClient,而是直接将下载 link 提供给 window.location.href,例如:
return window.location.href = https://${this.environment.path}/DownloadFileServlet?filename=${fileName}
下载开始得更快。虽然我确定这是否是正确的解决方案,但如果有更好的主意,我会很高兴。