我正在使用json2csv
节点模块生成一个CSV文件,其中我的数据写得非常好。
这是我用我的数据创建csv文件的代码。
Lead.find({ownerId:owner._id}, function(err, data){
if(err){res.json(err)}
else{
res.json(data);
var fields = ['lead', 'salutation', 'fname','lname','title','email','mobile','rating','address','city','state','zcode','company','industry','empSize','lsource'];
var csv = json2csv({ data: data, fields: fields });
var path='./public/csv/file'+Date.now()+'.csv';
fs.writeFile(path, csv, function(err,data) {
if (err) {throw err;}
else{
console.log('file Created');
//I need to download above creating csv file here
}
});
}
});
所以,现在我想知道如何在生成csv后下载创建的CSV文件。
我试过了res.setHeader('Content-disposition', 'attachment; filename=data.csv');
res.set('Content-Type', 'text/csv');
res.status(200).send(data);
但它不起作用......
请让我知道我该怎么做。
由于
答案 0 :(得分:3)
如果您使用快递4.x,则可以使用cleartool merge
cut
答案 1 :(得分:1)
json2csv({ data: myCars, fields: fields }, function(err, csv) {
if(err) {
throw err;
} else {
var path='./csv'+Date.now()+'.csv';
fs.writeFile(path, csv, function(err,data) {
if (err) {throw err;}
else{
console.log('file Created');
res.setHeader('Content-disposition', 'attachment; filename=data.csv');
res.set('Content-Type', 'text/csv');
res.status(200).send(csv);
//I need to download above creating csv file here
}
});
}
});
用此替换您的代码。
答案 2 :(得分:1)
尝试了所有这些......我得到了一个解决方案。
在Node.js的后端,API res.download(path)
运行正常。
在正面我使用Angular.js。因此,为了使其可行,我需要创建一个锚标记并触发像这样的点击事件
var anchor=angular.element('<a/>');
anchor.attr({href:'data:attachment/csv;charset=utf-8,' + encodeURI($scope.dattaa),target:'_blank',download:'lead'+Date.now()+'.csv'})[0].click();
现在工作正常。
谢谢大家的帮助。