如何使用javascript在客户端系统中提取Zip文件

时间:2010-12-22 11:15:14

标签: javascript unzip

我在server.i中有一个Zip文件正在下载zip文件保存到客户端system.now我想用javascript提取文件。 有人请帮帮我。                                提前谢谢。

4 个答案:

答案 0 :(得分:7)

您可以使用Javascript在浏览器中解压缩内存中的zipfiles。

This answer显示了如何。

浏览器中的js代码如下所示:

var doneReading = function(zip){
    DoSomethingWithEntries(zip);
};

var zipFile = new ZipFile(url, doneReading); 

提供的DoSomethingWithEntries方法内,你可以摆弄代表提取的zip文件的对象。

function DoSomethingWithEntries(zip){ 
  // for each entry in the zip...
  for (var i=0; i<zip.entries.length; i++) {
    var entry = zip.entries[i];
    var entryInfo = "<h4><a>" + entry.name + "</a></h4>\n<div>";  
    // put that into a div, if you like.
    // etc...
  }
}

如上所示,您可以发出条目列表及其名称,大小,日期等。

您还可以在每个zip条目上调用extract()方法。 (此处未显示) 如果提取,则提取异步发生。内容被扩展为在浏览器javascript环境的内存中维护的字节数组或字符串(取决于条目是二进制还是文本)。然后,您可以从压缩条目或任何您喜欢的内容中显示提取的内容。

我不相信你可以与文件系统进行交互,无论是阅读还是写作,除非你诉诸于vanilla javascript以外的东西 - 比如Google Gears,Silverlight和Flash。

答案 1 :(得分:2)

没办法。不可能(使用直接的javascript)。如初。

想想暗示 - 我可以访问一个网站,它可以将一个bajillion Mb zip文件下载到他们选择的位置,然后将其解压缩。

答案 2 :(得分:1)

按设计,javascript无法访问文件系统。

可能可以使用ActiveX,Java小程序等...

答案 3 :(得分:-1)

如果您在Windows上使用Internet Explorer,则可以使用ActiveX来利用默认情况下可用的一堆COM对象,例如使用WScript.Shell执行shell执行:

var shell = new ActiveXObject('WScript.Shell');
shell.run( '"unzip.exe command line stuff or whatever you want to do here..."' ); 

显然,这需要在用户方面进行非常荒谬的安全设置,除非您将这些设置放在一起供自己使用,否则应由用户决定是否要下载并提取文件或不