在客户端下载CSV文件

时间:2020-01-31 09:58:39

标签: node.js csv export-to-csv

我已经编写了一个API,可以将用户集合从MONGODB导出到CSV 。只需单击一下按钮即可调用该API,并将其导出为CSV数据...现在的问题是,调用此API时,它会生成我的项目中的结果文件,我希望结果文件能够在客户端获取下载,意味着当用户单击“导出”按钮时,它显示一个“另存为”选项,用户选择文件夹,名称等,然后在客户端计算机上下载该文件 ...任何想法如何实现此目标...我使用 NODE JS,MONGODB JSON2CSV 模块进行数据转换...下面是我的代码

app.get('/USER/exporttocsv', function (req, res, next) {
    USER.find().select('-__v').lean().exec({}, function (err, products) {
        const json2csvParser = new Json2csvParser({ header: true });
        const csvData = json2csvParser.parse(products);
        fs.writeFile("bezkoder_mongodb_fs.csv", csvData, function (error) {
            if (error) throw error;
            console.log("Write to bezkoder_mongodb_fs.csv successfully!");
        });
    });
})

2 个答案:

答案 0 :(得分:0)

您可以添加内容类型以进行响应,并如下所示设置csv文件名。

router.get('/csv', (req, res) => {
  res.setHeader('Content-Type', 'text/csv');
  res.setHeader("Content-Disposition", 'attachment; filename=ireshan.csv');
  res.send("Sally Whittaker,2018,McCarren House,312,3.75\r\nSally Whittaker,2018,McCarren House,312,3.75");
});

答案 1 :(得分:0)

将response.download()方法添加到您的代码中。这将使用户能够在客户端上下载文件:

res.download('path/to/file-to-download');
相关问题