导出CSV文件,并通过浏览器下载,使用快递j

时间:2018-03-20 00:29:41

标签: node.js csv express

var csv = require('fast-csv');
var fs = require('fs');
const app = express();

exportCSVfile: function(req, res){
    var ws = fs.createWriteStream('my.xls');
    console.log(req.body.save);
    session = req.session;
    if(session.uniqueID){
        if(session.uniqueID.access == 2){
            csv.write([
                ["a1","b1"],
                ["a2","b2"]
            ],{headers:true}).pipe(ws);
        }
    }
}

这是我当前的代码,我可以获取csv文件,但不是直接写在我的磁盘上,我想让浏览器下载它。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

首先写出一个响应标题,设置适当的内容类型和下载处置。

res.writeHead(200, {
    'Content-Type': 'text/csv',
    'Content-Disposition': 'attachment; filename=' + csvFileName
});

然后只需将csv()创建的流传输到响应。

csv.write([...]).pipe(res);

答案 1 :(得分:0)

您可以使用attachment()功能将文件附加到响应中。你可以试试这样的东西

var stream = fs.createReadStream(filename);
res.attachment(filename);
stream.pipe(res);