我有类似于this one的问题,我通过HTTP GET成功下载从后端生成的blob but 该文件在下载开始之前保存到浏览器内存中 .

下载小文件时没有问题但是没有立即下载100mb文件 .

订阅GET本身会导致保存大文件的延迟 .

我正在使用带有对象存储后端的Angular 6 . 这是下载功能:

finalDownload(url: string) {
  let headers = new HttpHeaders();

  headers = headers.append('X-Auth-Token', token);

  return this.http.get(url, { headers, responseType: 'blob' })
  .subscribe(response => {
    saveAs(response);
  })
}

这是过程:

  • 用户点击下载按钮

  • 带有 Headers 的GET请求被触发到后端

  • 一旦我订阅了响应,blob就会存储在浏览器内存中 .

  • 当blob完全存储在浏览器中时,将开始saveAs / download

第3步是问题所在 . 这个devtools截图with 108 MB transferred累积到文件大小(我下载了一个100 MB的文件),然后下载到文件系统开始 .