正在下载zipfile导致文件损坏

问题描述:

我试图从web服务器以编程方式使用javascript下载zip文件,并面临着存档遭到破坏的挑战。正在下载zipfile导致文件损坏

我使用下面的函数来下载

function download(){ 
     var http = new XMLHttpRequest(); 
     http.open("GET", 'http://jadonchemicals.com/sample.zip'); 
     http.setRequestHeader("dataType", "jsonp"); 
     http.onreadystatechange = function() { 
      if (http.readyState == 4 && http.status == 200) 
      { 
       var blobdata=new Blob([http.responseText], {type: "application/zip"}); 
      var a = document.createElement("a"); 
      a.href = window.URL.createObjectURL(blobdata); 
      a.click(); 
      } 
     }; 
      http.send(); 
} 

我收到以下错误,当我尝试打开存档

a) The file header is corrupt 
b) unexpected end of archive 

作为一个例子,而在下载sample.zip文件这个链接,该文件下载到975k的大小。 http://jadonchemicals.com/Blobtozip/

当我尝试通过链接脚本到一个按钮做编程使用JavaScript一样,文件大小增加至1779k和文件已损坏

我怀疑这是一个编码问题的结果。你能建议我应该怎么做才能解决?

你可以这样下载的JavaScript文件:

<iframe id="my_iframe" style="display:none;"></iframe> 
<script> 
function Download(url) { 
    document.getElementById('my_iframe').src = url; 
}; 
Download("http://jadonchemicals.com/sample.zip") 
</script> 

你只需要将代码插入到HTML文档。 我试着用这个下载你指定的文件,它是正确的975KB,并没有损坏。

+0

谢谢@ 0liveradam8 ...我错过了提到需求的关键部分。我们还需要将文件发送到云服务器,因此希望从blob中的LocalStorage中形成文件。如果我下载,我不能自动做到这一点。建立文件是造成腐败 – user7995357

+0

也许这个帖子https://stackoverflow.com/questions/21008732/javascript-save-blob-to-localstorage可以帮助你节省BLOB到localStorage。 – 0liveradam8