2012-07-30 62 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