我正在使用我的Angular 6应用程序中的一个服务从我的REST API下载一个文件(blob)。这项服务可以完美地处理小于10MB的文件(在Chrome和其他浏览器上)。我目前正在尝试下载一个14MB的文件,但它失败了,只在Chrome上(在Firefox上可以正常工作)
我认为这是Chrome的一个限制,但我在SO或Angular文档上找不到任何关于这方面的信息。
这是我的服务
displayFile(url: string) {
const headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.post('my_backend_path/getFile', JSON.stringify({urlData: url}), {responseType: "blob", headers})
.subscribe((data: any) => {
var urlBlob = window.URL.createObjectURL(data);
window.open(urlBlob);
},
(error) => {
//Here comes the error
});
}
我的Node REST API正确返回了状态为200的文件。失败来自Chrome控制台,如下所示:
POST my_backend_path/getFile net::ERR_FAILED 200 (OK)
在chrome的网络调试器中,我可以读到文件大小估计为10.0MB (而文件实际大小为14MB )。这就是为什么我认为这是由于一些Chrome或Angular HTTPClient的限制。
有谁有主意吗?
发布于 2019-07-19 16:59:35
我认为您需要将responseType :更改为ArrayBuffer。对我来说很管用
{responseType: "arrayBuffer", headers})
发布于 2020-03-06 01:24:26
我有这个问题- Chrome在API调用中记录了net::ERR_FAILED 200 (OK),它返回了超过10mb的json。令人惊讶的是,它在隐身模式下工作,周围没有人受到影响。
在我的例子中,解决方案是清理C: drive。它的磁盘空间很小(大约200Mb)。在磁盘清理之后,Chrome开始运行了。
发布于 2019-10-26 02:18:47
面临着完全相同的问题。但奇怪的是,这个下载在chrome的隐身模式下运行得很好。你可以尝试同样的方法。
https://stackoverflow.com/questions/55106303
复制相似问题