Sailsjs下载一个数据stream
我有一个帆的应用程序,我使用exceljs
来生成一个excel文件。 看他们的文档:
https://www.npmjs.com/package/exceljs#writing-xlsx
看起来他们允许写入一个stream。
// write to a stream workbook.xlsx.write(stream) .then(function() { // done });
当用户期待回应时,我该怎么做?
我读了下面的内容:
http://sailsjs.org/documentation/concepts/custom-responses/adding-a-custom-response
http://sailsjs.org/documentation/concepts/custom-responses/default-responses
保存文件后,我也尝试res.attachment()
,并没有成功。 有什么我失踪?
编辑
下面的答案几乎是正确的。 我做了以下,它的工作。 以前的解决scheme有时会损坏文件。
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实例和本地工作。
解决scheme: https : //github.com/guyonroche/exceljs/issues/37将工作簿写入响应。
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();