提问人:mvb13 提问时间:4/27/2022 更新时间:4/28/2022 访问量:227
大尺寸文件下载
Big size file download
问:
在我的网页上,我有以下JS代码,可以在用户单击时从服务器下载文件:
var oReq = new XMLHttpRequest();
oReq.open("POST", otherUrl, true);
oReq.responseType = "arraybuffer";
oReq.onload = function(oEvent) {
var blob = new Blob([oReq.response],
{type: oReq.getResponseHeader('Content-Type')});
var objectURL = URL.createObjectURL(blob);
downloadLink.href = objectURL;
downloadLink.click();
};
oReq.onprogress = function(oEvent) {
var percentage = Math.round(oEvent.loaded/oEvent.total*100);
downloadProgressDiv.innerHTML = "Progress: " + percentage + " % (" + oEvent.loaded
+ " from " + oEvent.total + " )";
};
oReq.send(this.path);
它适用于小于 1GB 大小的文件。当我尝试下载的文件大小约为 3GB 时,我遇到的问题就会发生。在这种情况下,方法与其他文件一样工作,一旦下载完成,就会调用方法,但是.我也可以保存文件,但其大小为 1KB。onprogress
onload
oReq.response=null
你能给我一些提示,为什么会这样吗?有什么其他方法可以做到这一点吗?
答:
1赞
CBroe
4/28/2022
#1
任何提示为什么会发生这种情况?
可能是因为浏览器内存不足,当您要求它为这种大小的对象创建对象 URL 时。
有什么其他方法可以做到这一点吗?
不要使用 AJAX,而是提交一个表单,以发送您需要的任何参数。method="post"
评论
method="post"