正在下载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,并没有损坏。
谢谢@ 0liveradam8 ...我错过了提到需求的关键部分。我们还需要将文件发送到云服务器,因此希望从blob中的LocalStorage中形成文件。如果我下载,我不能自动做到这一点。建立文件是造成腐败 – user7995357
也许这个帖子https://stackoverflow.com/questions/21008732/javascript-save-blob-to-localstorage可以帮助你节省BLOB到localStorage。 – 0liveradam8