我正在尝试使用
AJAX调用下载一个文件.我需要使用AJAX调用,因为我必须发出一个发布请求,我需要从客户端发送一些头.由于Server API不受我们控制,除了使用AJAX之外,我们没有太多选择.为了显示文件保存对话框,我将字节数组转换为blob到Object URL,如下所示
var oReq = new XMLHttpRequest(); oReq.open("POST","api/operations/zip",true); oReq.responseType = "arraybuffer"; oReq.onload = function(oEvent) { var blob=new Blob([oReq.response],{type: 'application/octet-binary'}); var link=document.createElement('a'); link.href=window.URL.createObjectURL(blob); link.download="myFileName.zip"; link.click(); } oReq.send(filePaths);
现在我想知道,除了浏览器内存限制之外,我们可以在JavaScript中对Blob大小有任何限制.喜欢可以下载4 GB的文件,如果我有大约8 GB的RAM.
解决方法
Blob似乎在Chrome中限制为500MiB,并且目前存储在内存中,但重新设计正在进行中:
https://code.google.com/p/chromium/issues/detail?id=375297
其他浏览器实现的限制略有不同: