通过XMLHttpRequest下载大文件

时间:2019-03-19 16:29:05

标签: javascript firefox xmlhttprequest

我正在使用以下代码使用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

0 个答案:

没有答案