Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Sailsjs下载数据流_Node.js_Excel_Sails.js_Node Streams - Fatal编程技术网

Node.js Sailsjs下载数据流

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(),但没有成功。有什么我遗漏的吗 编辑 下面的答案几乎是正确的。我做了下

我有一个sails应用程序,我正在使用
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操作系统是什么?让这成为另一个问题。我可以调查这个问题。