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();