创build并发送Zip文件 – NODE JS

我试图创build,然后发送zip文件到客户端。 我知道如何创build它,但发送给客户端时遇到问题。 我尝试了很多方法。 我正在发送来自客户端的POST请求,并作为响应我想发送一个文件。 这是我的服务器站点示例代码

var Zip = require('node-zip'); router.post('/generator', function(req, res, next) { var zip = new Zip; zip.file('hello.txt', 'Hello, World!'); var options = {base64: false, compression:'DEFLATE'}; fs.writeFile('test1.zip', zip.generate(options), 'binary', function (error) { console.log('wrote test1.zip', error); }); res.setHeader('Content-disposition', 'attachment; filename=test1.zip'); res.download('test1.zip'); } 

}); 我也尝试过这样的事情:

  res.setHeader('Content-disposition', 'attachment; filename=' + filename); res.setHeader('Content-type', mimetype); var filestream = fs.createReadStream(file); filestream.pipe(res); 

我试图使用这样的库:

  1. 节点拉链

  2. 归档

任何人都可以解释我怎么做?

我之前没有使用node-zip或archiver(我通常只使用内置的zlib模块),但是我马上注意到的一点是,您应该将res.download放在writeFile的callbackres.download中。 这样它只会在文件被写入磁盘后才发送。

 fs.writeFile('test1.zip', zip.generate(options), 'binary', function (error) { res.download('test1.zip'); }); 

我希望这个解决scheme适合你,如果它不觉得评论。

另外,我认为res.download为你设置了Content-disposition标题,你不需要手动设置它。 不是100%确定那个。