如何在 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}

下载开始得更快。虽然我确定这是否是正确的解决方案,但如果有更好的主意,我会很高兴。