我有类似于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的文件),然后下载到文件系统开始 .