首页 > 解决方案 > Zip 下载没有发生

问题描述

嗨,我是 java 脚本的新手,我正在尝试从运行在http://10.1.2.137:5000/download的 Web 服务器下载 zip 文件。

当我在浏览器中以http://10.1.2.137:5000/download单独访问 URL 时,正在下载 te zip 文件,但是当我从 java script 调用时,似乎 zip 文件已损坏。无法使用 win rar 打开 zip 文件。不确定这是 CORS 的问题。

$scope.downloadData  = function (){
  console.log ('Entering in to Download Method')
  var url = 'http://10.1.2.137:5000/download';
  var xhr = new XMLHttpRequest();
  xhr.open("GET", url);
  xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
  xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
  xhr.responseType = "arraybuffer";
  var linkElement = document.createElement('iframe');
  document.body.appendChild(linkElement)
  xhr.send();
  xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
        var blob = new Blob([str2bytes(xhr.response)], {type: "application/zip"});
        var fileName = "logs.zip";
        if (window.navigator && window.navigator.msSaveOrOpenBlob) {
            window.navigator.msSaveOrOpenBlob(blob, filename);
        } else {
            var a = document.createElement("a");
            document.body.appendChild(a);
            a.style = "display:none";
            var url = window.URL.createObjectURL(blob);
            a.href = url;
            a.download = fileName;
            a.click();
            window.URL.revokeObjectURL(url);
            a.remove();
        }
    }
        }
};

标签: javascriptangularjs

解决方案


您可以使用window.open,这将指示浏览器打开 url 并开始下载。例如

window.open("http://10.1.2.137:5000/download","_self");

推荐阅读