2016-01-10 70 views
0

我想使用jszip.js捆綁多個excel文件從服務器應該下載在一起作爲一個zip文件點擊。從服務器壓縮excel文件下載

當我試圖替換演示腳本時,我可以創建一個zip文件,但它是空的。

當我將兩個文件放入zip.file中時,第一個文件會出現在zip中,但已損壞。 像:

var zip = new JSZip(); 
zip.file('http://website/file1.xlsx', 'http://website/file2.xlsx'); 
var content = zip.generate({type:"blob"}); 
saveAs(content, "example.zip"); 

所以我應該把第一的位置,比文件的位置的文件名,但比我要訪問上的其他方式...

我我想我只是不檢查API的工作原理。

這將是巨大的,得到與在服務器上託管至少兩個文件的例子...

+0

你不能通過它的URL,你需要傳遞我上次使用它的實際數據。這些網址將不得不加載同步來構建這樣的zip文件,我認爲節點不會那麼容易...... – dandavis

+0

感謝您的快速評論!你知道也許另一種方法來使它工作? – KriKox

+0

另外請記住.xlsx文件本身已經是zipfiles(只需將.zip添加到名稱中即可查看)。所以當添加一個文件時,你可以告訴庫不要再壓縮,而是存儲文件(如果庫支持的話)。這可以節省一些時間創建壓縮文件(除非庫足夠聰明,先檢查文件的頭部,並理解它已經被壓縮)。 –

回答

1

JSZip不能下載內容,但如果你可以使用XHR(與xhr.responseType = "arraybuffer")或JSZipUtils需要支持IE < = 9.您可以在文檔的this page找到更多詳細信息。

你試圖做的看起來像this example:下載幾個文件並壓縮它們。

沒有複製/粘貼整個代碼中,例如:

  • 觸發Ajax調用(與JSZipUtils,但你可以很容易地只用一個responseType = "arraybuffer",如果你只支持最新的瀏覽器)
  • 將它們包裝成的承諾( jQuery的承諾,在這裏,但你可以用你自己的)
  • 添加結果成zip對象
  • 等待所有的承諾,引發了下載之前完成
+0

非常感謝!我知道了... – KriKox