如何使用koajs下载csv文件

时间:2016-08-15 08:32:21

标签: node.js csv attachment koa.js

我使用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

Here is response body

2 个答案:

答案 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;