2014-06-12 22 views
1

我不想使用基于flash的downlodify下载从jszip创建的zip文件。如何在IE9及以下版本下载jszip.js创建的zip文件,无需使用基于flash的downlodify

我很好用的ActiveX,因此我试图将jszip转换为ActiveX。

压缩文件正在生成,但它不是有效的文件。我下面的IE9转换出了什么问题?

这如果IE9 -

var content = zip.generate({ type: "base64" }); 
var fso = new ActiveXObject("Scripting.FileSystemObject"); 
var a = fso.CreateTextFile("c:\Temp\test.zip", true); 
a.WriteLine(content); 
a.Close(); 
var link = document.createElement("a"); 
link.href = "C:\Temp\test.zip"; 
link.style = "visibility:hidden"; 
link.download = "test.zip"; 
document.body.appendChild(link); 
link.click(); 
document.body.removeChild(link); 

对于其他浏览器,我愉快地使用下面的代码。

var content = zip.generate({ type: "blob" }); 
saveAs(content, "test.zip"); 

需要帮助IE9。

回答

0

你可能想看看this question

var a, blob, data, downloadLink, json, url; 

data = {whatever: 1}; 

json = JSON.stringify(data, undefined, 2); 
blob = new Blob([json], {type: "application/json"}); 
url = window.URL.createObjectURL(blob); 

a = document.createElement("a"); 
a.download = "test.json"; 
a.href = url; 
a.textContent = "Download"; 

document.getElementById("link").appendChild(a); 

这里用户创建blob对象,然后创建该斑点的URL,并创建一个链接到URL锚。

+2

Blob不支持IE9 – user3732868

+0

对于IE9来说太糟糕了。 – arielnmz

0

Scripting.FileSystemObject似乎处理文本文件,而不是二进制文件。你想要的是一种编写二进制文件的方法。

我找到了http://www.neilstuff.com/save-binary-file-to-disk-in-javascript.html哪些可以帮到你。我在IE9中试过,但是我无法摆脱安全错误(毕竟我在磁盘上编写任意文件)。

此外,不要忘记将类型更改为“字符串”:zip.generate({type:"string"})

+0

新的ActiveXObject(“ADODB.Stream”);不支持IE9。 – user3732868

相关问题