【问题标题】:Deal with ZIP-Buffer in node.js在 node.js 中处理 ZIP-Buffer
【发布时间】:2012-07-30 13:42:09
【问题描述】:

我正在使用 node.js 构建 webapp 的服务器部分。这涉及从 thetvdb.com (API documentation of thetvdb) 获取数据。 数据以 zip 文件的形式提供。 HTTP 下载是没有问题的,但是,解析文件是。我实际上从不保存文件,而只是将它保存在内存中,正如How to download and unzip a zip file in memory in NodeJs?中所建议的那样

我有一个包含有效数据的缓冲区(与我使用浏览器/curl 下载文件时的数据相同...)。但是,adm-zip(我也厌倦了其他 zip 库,有些建议无效的 zip 长度)无法打开它。它没有显示错误,但最后的 zipEntries 长度为 0。 当我将缓冲区写入文件系统并使用 gui 或 cli 工具打开它时,它可以工作。

我无法提供该文件的直接链接,因为它会涉及我的 API 密钥,但我重新上传了它here。

【问题讨论】:

  • 添加一些代码说明您如何使用adm-zip。您的问题可能是您在on('data', ...) 中解压缩而不是等待on('end', ...),但我们需要查看一些代码来帮助您。
  • 我使用与我链接的另一个问题中接受的答案相同的代码。 (stackoverflow.com/questions/10359485/…)

标签: node.js zip


【解决方案1】:

我想我可能会给你一个答案:

不要依赖npm install。我刚刚使用您提供的 zip 文件运行了您链接到的 example,我得到了 "0" 的输出。

我在另一个 StackOverflow 页面上看到了一条评论,说 npm 上的 adm-zip 版本不是最新的。我从 github 获取了一份 adm-zip 的新副本,覆盖了我的 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>

试一试!

【讨论】:

  • 我希望 npm install https://github.com/cthackers/adm-zip.git 工作,但它在我的工作笔记本电脑 (Windows) 和现在在家 (Mac) 上都失败了。所以现在,您只需从 github tarball/zip 手动复制粘贴即可。
  • 我在 package.json 中添加了 git 存储库作为依赖项。所以npm i 有效。
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多