2012-07-30 66 views
0

我正在使用node.js構建webapp的服務器部分。這涉及從tvdb.com獲取數據(API documentation of thetvdb)。數據以zip文件形式提供。 HTTP下載沒有問題,但解析文件是。我實際上從來沒有保存該文件,但只保留在內存中,如How to download and unzip a zip file in memory in NodeJs?處理node.js中的ZIP緩衝區

建議我有一個有效數據緩衝區(與使用瀏覽器/ curl下載文件相同的數據...)。然而,adm-zip(我也厭倦了其他的zip庫,一些建議無效的zip長度)無法打開它。它不會顯示錯誤,但最終的zipEntries長度爲0. 當我將緩衝區寫出到文件系統並使用gui或cli工具打開它時,它可以工作。

我不能給這個文件提供一個direkt鏈接,因爲它涉及到我的API密鑰,但是我重新上傳了它here

+0

添加一些你如何使用'adm-zip'的代碼。你的問題可能是你在'on'('data',...)解壓縮,並沒有等'on'('end',...)',但是我們需要看一些代碼來幫助你您。 – rdrey 2012-07-30 14:40:30

+0

我使用與我鏈接的其他問題中接受的答案相同的代碼。 (http://stackoverflow.com/questions/10359485/how-to-download-and-unzip-a-zip-file-in-memory-in-nodejs) – Viehzeug 2012-07-30 14:49:22

回答

1

我想我會爲你提供一個答案:

不要依賴npm install。我剛剛運行了與您提供的zip文件鏈接的example,我得到的輸出爲"0"

我看到了另一個StackOverflow頁面的評論,說npm上的adm-zip版本不是最新版本。我抓起adm-zip一個新的副本從GitHub,改寫在我node_modules文件夾中的一個,並重新進行了示例代碼,現在得到如下:

... 
<Actor> 
    <id>237811</id> 
    <Image>actors/237811.jpg</Image> 
    <Name>Peter Pratt</Name> 
    <Role>The Master</Role> 
    <SortOrder>3</SortOrder> 
</Actor> 
<Actor> 
    <id>23780s/237811.jpg</Image> 

把那一個鏡頭!

+0

非常感謝。似乎工作。 – Viehzeug 2012-07-30 16:43:24

+0

我希望'npm install https:// github.com/cthackers/adm-zip.git'能夠正常工作,但在我的工作筆記本電腦(Windows)和現在在家中(Mac)都會失敗。所以現在,你只需要從github tarball/zip手動複製粘貼。 – rdrey 2012-07-30 17:05:49

+0

我在package.json中添加了git倉庫作爲依賴項。所以'npm我'工作。 – Viehzeug 2012-07-30 19:14:04