在node.js中的Zip压缩文件

我想创build一个zip压缩文件并将其解压到node.js. 我找不到任何节点实现。 请帮忙。

我结束了这样做(我使用Express)。 我正在创build一个包含给定目录(SCRIPTS_PATH)上的所有文件的ZIP。

我只在Mac OS X Lion上testing过这个,但是我猜测在安装了Cygwin的Linux和Windows上它可以正常工作。

var spawn = require('child_process').spawn; app.get('/scripts/archive', function(req, res) { // Options -r recursive -j ignore directory info - redirect to stdout var zip = spawn('zip', ['-rj', '-', SCRIPTS_PATH]); res.contentType('zip'); // Keep writing stdout to res zip.stdout.on('data', function (data) { res.write(data); }); zip.stderr.on('data', function (data) { // Uncomment to see the files being added //console.log('zip stderr: ' + data); }); // End the response on zip exit zip.on('exit', function (code) { if(code !== 0) { res.statusCode = 500; console.log('zip process exited with code ' + code); res.end(); } else { res.end(); } }); }); 

节点核心内置了zipfunction: http : //nodejs.org/api/zlib.html

使用它们:

 var zlib = require('zlib'); var gzip = zlib.createGzip(); var fs = require('fs'); var inp = fs.createReadStream('input.txt'); var out = fs.createWriteStream('input.txt.gz'); inp.pipe(gzip).pipe(out); 

你可以试试node-zip npm模块。

它将JSZip移植到节点,压缩/解压缩zip文件。

你可以使用归档模块,这对我很有帮助,这里是一个例子:

 var Archiver = require('archiver'), fs = require('fs'); app.get('download-zip-file', function(req, res){ var archive = Archiver('zip'); archive.on('error', function(err) { res.status(500).send({error: err.message}); }); //on stream closed we can end the request res.on('close', function() { console.log('Archive wrote %d bytes', archive.pointer()); return res.status(200).send('OK').end(); }); //set the archive name res.attachment('file-txt.zip'); //this is the streaming magic archive.pipe(res); archive.append(fs.createReadStream('mydir/file.txt'), {name:'file.txt'}); //you can add a directory using directory function //archive.directory(dirPath, false); archive.finalize(); }); 

如果你只需要解压, node-zipfile看起来不像节点归档那么重。 它肯定有一个较小的学习曲线。

如果您不想使用/学习库,则可以使用节点通过执行subprocess来控制zip命令行工具

虽然我build议学习Emmerman提到的图书馆

ADM-ZIP

这是一个仅用于阅读,创build和修改内存中的zip档案的JavaScript库。

它看起来不错,但它是一个小车。 解压缩文本文件时遇到了一些麻烦。

我已经使用'归档'来压缩文件。 这里是一个显示如何使用它的Stackoverflow链接 , Stackoverflow链接用于压缩文件与存档

您可以使用支持node.js和.NET进程之间的互操作的edge.js模块,然后调用.NET框架的ZipFile类,从而允许您操作ZIP存档。 以下是使用edge.js创buildZIP包的完整示例 。 还可以使用edge.js检查解压缩的示例 。