[英]How to download a file in node js
我正在尝试以 .csv 格式下载对象数组。 下面是将数组转换为 .csv 并存储在文件 file.csv 中的代码片段。
let downloadHelper = function(records){
let csvwriter = require('csv-writer');
createCsvWriter = csvwriter.createObjectCsvWriter;
const csvWriter = createCsvWriter({
path: './file.csv'
csvWriter.writeRecords(records).then(() => {
console.log('Done');
});
}
我需要将 file.csv 下载到我的本地。 尝试使用请求,没有帮助,因为它只接受 http 请求。 不知道,如何继续..... 请帮忙
你没有向我们提供很多信息。 但是使用 Express 你可以做到:
app.get("/", (req, res) => {
res.download("./file.csv", "your-custom-name.csv");
});
如果这对您没有帮助,请提供有关上下文、您正在使用的框架以及前端的更多信息。
谢谢
例如,您可以像这样使用 Express:
// Libs
const express = require('express');
const http = require('http');
const path = require('path');
// Setup
const port = 8080;
const app = express();
const httpServer = http.createServer(app);
// http://localhost:8080/download
app.get('/download', (req, res) => {
res.sendFile(path.resolve(__dirname, './file.csv'));
});
// http://localhost:8080/csv/file.csv
app.use('/csv', express.static(path.resolve(__dirname, './csv_files/')));
// Run HTTP server
httpServer.listen(port, () => console.log('Server is listening on *:' + port));
如果您运行此代码段,您可以打开http://localhost:8080/download
并http://localhost:8080/download
./file.csv。
以下部分代码负责:
app.get('/download', (req, res) => {
res.sendFile(path.resolve(__dirname, './file.csv'));
});
或者,如果您想访问整个目录./csv_files/
您可以这样做:
app.use('/csv', express.static(path.resolve(__dirname, './csv_files/')));
只需创建./csv_files/foo.csv
文件并转到http://localhost:8080/csv/foo.csv
。
这对你有意义吗?
PS工作示例:
// Libs
const express = require('express');
const http = require('http');
const path = require('path');
const fs = require('fs');
// Setup
const port = 8080;
const app = express();
const httpServer = http.createServer(app);
// http://localhost:8080/download
app.get('/download', (req, res) => {
const filename = path.resolve(__dirname, './file' + (new Date()).getTime() + '.csv');
fs.writeFileSync(filename, 'foo,bar,baz');
res.sendFile(filename);
});
httpServer.listen(port, () => console.log('Server is listening on *:' + port));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.