在express中要用到压缩,把某一个文件夹压缩成zip,再返回到客户端提供下载.
用archiver库
var Archiver = require('archiver') router.get('/report', function(req, res) { var archive = Archiver('zip') archive.on('error', function (err) { res.status(500).send({ error: err.message }) }) archive.on('end', function () { log.info('Archive wrote %d bytes', archive.pointer()) }) res.attachment('test.zip') archive.pipe(res) // 这里一定要加最后的'/' archive.directory('/var/test/'), 'tttttt') archive.finalize() })
这样就很方便的把某一个目录直接打包成zip,而且不会阻塞客户端的操作
但是,有问题:
在我电脑上试的时候,如果文件夹有10G大小,那么下载下来的zip档打不开。这是个问题,提交给这个库的开发者.