sailsjs使用res.attachment()动态发送文件

时间:2018-01-29 11:41:08

标签: sails.js

我想使用sailsjs中的res.attachment()等文件向客户端发送文件。

我根本不想将文件存储在服务器上,我只是想不断生成它并将其发送给客户端。

例如,我的控制器看起来像这样

file: function(req, res, next) {
    var name = req.param('name');
    var data = 'Welcome Mr/Mrs ' + name


    res.attachment(data, 'fileName.txt')
    res.send()
},

一些问题

1)res.attachment似乎不接受文件名作为参数 2)发送的文件名称为" data"但文件中没有内容。

是否有人知道可用于执行此操作的其他功能?我不需要在文件中使用任何格式化等,但是必须生成它并将其发送回客户端并调用api端点?

1 个答案:

答案 0 :(得分:0)

我找到了一种方法,通过将数据传递给res.attachment()我可以克服1& 2

var Readable = require('stream').Readable;

module.exports = {

file: function(req, res, next) {

    var s = new Readable();
    s._read = function noop() {}; // redundant? see update below
    s.push("your text here\r\n")
    s.push("next line text\r\n");
    // s.push(null);

    // res.attachment('test.csv');
    // -> response header will contain:
    //   Content-Disposition: attachment
    s.pipe(res.attachment('file.txt'))
    // res.download(data,'fileName.csv');
    res.send()
},