Node.js Sailsjs下载数据流
我有一个sails应用程序,我正在使用Node.js Sailsjs下载数据流,node.js,excel,sails.js,node-streams,Node.js,Excel,Sails.js,Node Streams,我有一个sails应用程序,我正在使用exceljs生成一个excel文件。查看他们的文档: 似乎它们允许写入流 // write to a stream workbook.xlsx.write(stream) .then(function() { // done }); 当用户期望得到响应时,我如何执行此操作 我读了以下内容: 保存文件后,我还尝试了res.attachment(),但没有成功。有什么我遗漏的吗 编辑 下面的答案几乎是正确的。我做了下
exceljs
生成一个excel文件。查看他们的文档:
似乎它们允许写入流
// write to a stream
workbook.xlsx.write(stream)
.then(function() {
// done
});
当用户期望得到响应时,我如何执行此操作
我读了以下内容:
保存文件后,我还尝试了res.attachment()
,但没有成功。有什么我遗漏的吗
编辑
下面的答案几乎是正确的。我做了下面的事情,它成功了。以前的解决方案有时会损坏文件
res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
return workbook.xlsx.write(res)
.then(function() {
res.end();
});
这在我的EC2实例和本地都有效。解决方案:将工作簿写入响应
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
var sheet = workbook.addWorksheet("My Sheet");
res.setHeader('Content-Type', 'application/vnd.openxmlformats');
res.setHeader("Content-Disposition", "attachment; filename=" + "Report.xlsx");
workbook.xlsx.write(res);
res.end();
@KVISH现在应该可以工作了。我被溪流的使用弄糊涂了。因为xlsx.write可以写入响应,所以没有必要直接使用流。奇怪的是,它可以在我的Mac上工作,但不能在我的EC2实例上工作。奇怪。@KVISH你的ec2操作系统是什么?让这成为另一个问题。我可以调查这个问题。