gpt4 book ai didi

node.js - 如何才能将新创建的 .csv 文件下载给用户?

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:02 29 4
gpt4 key购买 nike

我在我的网站上创建了一个按钮,单击该按钮将创建一个 .csv 文件。我想要的是在创建文件后立即将该文件下载给用户。这是我到目前为止所拥有的:

var data = ...; // stuff
var fields = ...; // stuff
json2csv({ data: data, fields: fields }, function(err, csv) {
if (err) {
console.log(err);
}

fs.writeFile('test.csv', csv, function(err) {
if (err) throw err;
console.log('file saved');
// now, download this file to the user. How?
});
});

.csv 文件已创建,但我希望该文件立即下载给用户。理想情况下,.csv 文件将直接流式传输给用户,而不会将其保存在我的服务器上,但我不确定如何执行此操作。任何帮助将不胜感激。

最佳答案

如果您使用 express ,可以使用sendFile 。假设您的代码可以访问 response 对象,您可以像这样发送文件:

var data = ...; // stuff
var fields = ...; // stuff
json2csv({ data: data, fields: fields }, function(err, csv) {
if (err) {
console.log(err);
}

fs.writeFile('test.csv', csv, function(err) {
if (err) throw err;
console.log('file saved');

var options = {
root: __dirname
};

res.sendFile('test.csv', options, function (err) {
if (err) {
console.log(err);
res.status(err.status).end();
}
else {
console.log('Sent:', fileName);
}
});
});
});

对于发送文件而不将其保存到服务器,您可以通过设置 Content-Disposition header 来实现:

var data = ...; // stuff
var fields = ...; // stuff
json2csv({ data: data, fields: fields }, function(err, csv) {
if (err) {
console.log(err);
}

res.set({
'Content-Disposition': 'attachment; filename=test.csv',
'Content-Type': 'text/csv'
});
res.send(csv);
});

关于node.js - 如何才能将新创建的 .csv 文件下载给用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292930/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com