在我的網頁上,我有以下 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 時。在這種情況下onprogress,方法與其他檔案一樣作業,onload一旦下載完成,方法就會被呼叫,但是oReq.response=null. 我也可以保存檔案,但它的大小是 1KB。
請您給我一些提示,為什么會發生這種情況?這樣做的任何替代方法?
uj5u.com熱心網友回復:
任何提示為什么會發生這種情況?
可能是因為瀏覽器記憶體不足,當您要求它為這樣大小的物件創建物件 URL 時。
這樣做的任何替代方法?
不要使用 AJAX,而是提交一個表單method="post"來發送你需要的任何引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/467655.html
標籤:javascript 阿贾克斯 谷歌浏览器
