我正在使用以下代码使用XMLHttpRequest从服务器下载大文件。我正在Firefox和Windows上进行测试。
在我的代码中,downloadURL是从服务器下载文件的URL。我正在使用SAP UI5的save控件将响应保存到本地文件系统。
var oBlob = null;
var returnStatus;
var xhttp = new window.XMLHttpRequest();
xhttp.open("GET", downloadURL, true); // download urlà content url
xhttp.responseType = "blob";
xhttp.onload = function () {
var oExtension = sFileName.substr(sFileName.lastIndexOf('.') + 1);
var oFileName = sFileName.substr(0, sFileName.lastIndexOf('.'));
oBlob = xhttp.response;
if (xhttp.status !== 400) {
sap.ui.core.util.File.save(oBlob, oFileName, oExtension, sMimeType, 'utf-8');
returnStatus = true;
} else {
returnStatus = false;
}
resolve(returnStatus, xhttp.response);
};
xhttp.send();
});
此代码适用于较小的文件,但是如果我们针对大于1.8 GB的较大文件进行测试,则该代码将无效。
似乎完全没有从Firefox发送请求。我只是在网络标签中看到了请求,但没有标题值。有人看到过这种请求吗?
奇怪的是,这适用于文本文件,但不适用于zip和pdf等二进制文件。
我发现像这样保存大文件会造成问题,因为文件内容先存储在内存中,然后再写入。但是为什么代码可以处理文本文件呢?
最好的问候,
Saurav