2010-12-22 60 views
3

我在server.i中有一個Zip文件,下載zip文件保存到客戶端system.now我想提取使用javascript的文件。 有人請幫助我。 在此先感謝。如何在客戶端系統中使用javascript提取Zip文件

+0

你想在客戶端機器上解壓縮一個文件...我猜這是不可能的。 – 2010-12-22 11:19:52

+0

您可以使用自解壓zip文件:http://www.winzip.com/prodpagese.htm然後當用戶選擇「打開」時,壓縮包會自行提取自身。這是你能做的最好的。 – 2010-12-22 11:54:03

回答

1

按設計javascript無法訪問文件系統。

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

2

沒辦法。不可能(用直的javascript)。永遠。

想想這個含義 - 我可以訪問一個網站,該網站可以將bajillion Mb zip文件下載到我的系統上自己選擇的位置,然後提取它。

+1

事實上,每一個黑客的溼夢...;) – 2010-12-22 11:44:12

-1

如果您在Windows上使用Internet Explorer,可以使用ActiveX利用一堆可用默認COM對象,如使用WScript.Shell進行外殼的執行:

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

顯然,這將需要在用戶方面非常荒謬的安全設置,除非這是你自己使用的東西,你應該讓用戶決定是否要下載和解壓文件。

7

您可以使用Javascript在瀏覽器中的內存中解壓zip文件。

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環境的內存中維護的字節數組或字符串(取決於條目是二進制還是文本)。然後,您可以顯示從壓縮條目中提取的內容,或任何您喜歡的內容。

我不相信你可以與文件系統進行交互,無論是閱讀還是書寫,除非你使用香草javascript以外的東西 - 比如Google Gears,Silverlight和Flash。

相關問題