我使用koajs作为nodejs的框架。我尝试创建csv数据并将其响应给客户端但不能正常工作
let fields = ['code', 'status'];
let p = new Promise((resolve, reject) => {
json2csv({data: data, fields: fields }, (err, response) => {
if (err) {
reject(err);
} else {
resolve(response);
}
});
});
return p.then(data => {
let fileName = 'promotioncode-' + moment().unix();
ctx.response.attachment(fileName + '.csv');
ctx.response.type = 'application/ms-excel';
ctx.body = data;
})
响应是计划文本数据而不是附件文件 Here is response headers
答案 0 :(得分:4)
如果您想发送附加到正文的可下载文件,则需要创建该文件的读取流。
const fs = require('fs');
ctx.set('Content-disposition', `attachment; filename=${result}`);
ctx.statusCode = 200;
ctx.body = fs.createReadStream(result);
注意:结果你有文件路径
答案 1 :(得分:0)
这对我有用:
ctx.set('Content-disposition', `attachment; filename=${fileName}.csv`);
ctx.statusCode = 200;
ctx.body = data;