Node.js 使用express js导出CSV文件,并由浏览器下载

Node.js 使用express js导出CSV文件,并由浏览器下载,node.js,csv,express,Node.js,Csv,Express,这是我目前的代码,我可以得到csv文件,但不是直接写在我的磁盘上,我想让浏览器下载它。如何才能做到这一点?首先写出一个响应标题,设置适当的内容类型和下载配置 var csv = require('fast-csv'); var fs = require('fs'); const app = express(); exportCSVfile: function(req, res){ var ws = fs.createWriteStream('my.xls'); console.

这是我目前的代码,我可以得到csv文件,但不是直接写在我的磁盘上,我想让浏览器下载它。如何才能做到这一点?

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

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()创建的流传输到响应

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

首先写出一个响应头,为下载设置适当的内容类型和配置

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()创建的流传输到响应

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

您可以使用
attachment()
函数将文件附加到响应。你可以试试这样的

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

您可以使用
attachment()
函数将文件附加到响应。你可以试试这样的

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

我不确定我是否理解,但您是否希望通过express将csv文件发送到浏览器以便浏览器下载?我不确定我是否理解,但您是否希望通过express将csv文件发送到浏览器以便浏览器下载?