Node.js 中的 Zip 档案
我想创建一个 zip 存档并将其解压缩到 node.js 中。
我找不到任何节点实现。
I want to create a zip archive and unzip it in node.js.
I can't find any node implementation.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
node-core 内置了 zip 功能: http://nodejs.org/api/zlib.html
使用它们:
node-core has built in zip features: http://nodejs.org/api/zlib.html
Use them:
我最终这样做了(我正在使用 Express)。我正在创建一个 ZIP,其中包含给定目录 (SCRIPTS_PATH) 上的所有文件。
我只在 Mac OS X Lion 上对此进行了测试,但我想它在安装了 Cygwin 的 Linux 和 Windows 上也能正常工作。
I ended up doing it like this (I'm using Express). I'm creating a ZIP that contains all the files on a given directory (SCRIPTS_PATH).
I've only tested this on Mac OS X Lion, but I guess it'll work just fine on Linux and Windows with Cygwin installed.
您可以尝试 node-zip npm 模块。
它将 JSZip 移植到节点,以压缩/解压缩 zip 文件。
You can try node-zip npm module.
It ports JSZip to node, to compress/uncompress zip files.
您可以使用 archiver 模块,这对我非常有帮助,这是一个示例:
You can use archiver module, it was very helpful for me, here is an example:
如果您只需要解压缩, node-zipfile 看起来比 节点存档。它的学习曲线肯定更小。
If you only need unzip, node-zipfile looks to be less heavy-weight than node-archive. It definitely has a smaller learning curve.
adm-zip
这是一个纯 JavaScript 库,用于读取、创建和修改内存中的 zip 存档。
它看起来不错,但有点小问题。我在解压缩文本文件时遇到一些问题。
adm-zip
It's a javascript-only library for reading, creating and modifying zip archives in memory.
It looks nice, but it is a little buggy. I had some trouble unzipping a text file.
我使用“archiver”来压缩文件。以下是 Stackoverflow 链接之一,展示了如何使用它,使用归档器压缩文件的 Stackoverflow 链接
I have used 'archiver' for zipping files. Here is one of the Stackoverflow link which shows how to use it, Stackoverflow link for zipping files with archiver
我发现围绕 7-zip 进行我自己的包装是最简单的,但是您也可以轻松地使用 zip 或运行时环境中可用的任何命令行 zip 工具。这个特定的模块只做一件事:压缩目录。
像这样使用它,假设您已将上述代码保存到
zipdir.js
中。第三个log
参数是可选的。如果您有自定义记录器,请使用它。或者完全删除我讨厌的日志语句。I've found it easiest to roll my own wrapper around 7-zip, but you could just as easily use zip or whatever command line zip tool is available in your runtime environment. This particular module just does one thing: zip a directory.
Use it like this, assuming you've saved the above code into
zipdir.js
. The thirdlog
param is optional. Use it if you have a custom logger. Or delete my obnoxious log statements entirely.如果你不想使用/学习一个库,你可以使用node来控制通过执行子进程来使用 zip 命令行工具
虽然我建议学习像 Emmerman 提到的那样的库
If you don't want to use/learn a library, you could use node to control the zip commandline tools by executing child processes
Though I'd recommend learning a library like the one mentioned by Emmerman
您可以使用支持node.js和.NET进程内互操作的 edge.js 模块,并且然后调用 .NET 框架的 ZipFile 类,它允许您操作 ZIP 档案。这是使用edge.js创建ZIP包的完整示例。另请查看使用edge.js解压示例。
You can use the edge.js module that supports interop between node.js and .NET in-process, and then call into .NET framework's ZipFile class which allows you to manipulate ZIP archives. Here is a complete example of creating a ZIP package using edge.js. Also check out the unzip example using edge.js.