在发送给客户端之前,创build一个存档并添加文件

我想用存档器创build一个存档,并在其中放置一些文件。 客户端,用户将点击一个button,它会生成存档(服务器端)。

我正在使用Express.js,这是我的服务器端代码,将生成档案。 我做了这样的事情:

app.get('/export/siteoccupancy', function(req,res){ if(_.isEmpty(req.query)){ res.status(404).send('requires a start and end date'); }else{ //getting paramas var sDate = req.query.startDate; var eDate = req.query.endDate; } var fs = require('fs'); var archiver = require('archiver'); var archive = archiver('zip'); archive.on('err',function(err){ res.status(500).send({error : err.message}); }); res.on('close',function(){ console.log('Archive size : %d b',archive.pointer()); return res.status(200).send('OK').end(); }); res.attachment('data-export.zip'); archive.pipe(res); var stream = fs.createWriteStream("data-report.txt')"); stream.once('open',function(fd) { stream.write('test1'); stream.write('\n test2'); stream.write('\n test3'); stream.end(); }); archive.append(stream); archive.finalize(); }); 

这对我来说是全新的,我想知道为什么控制台告诉我stream文件是空的?

错误:append:在Archiver.append上,项目名称必须是非空string值

问候

你只能追加一个readStream,因为一个档案只能从readstream中获取数据。 您可以使用名为archive.append的方法,并且应该使用name属性传递第二个参数来命名文件。 像这样:

 archive.append(myReadStream,{ name : 'myTest.txt'});