从 csv 文件数据创建 json 对象作为节点 js 请求中的缓冲区
create json object from csv file data coming as buffer in request in node js
我正在处理来自使用 multer
、csv-parser
创建 json 对象的请求的 csv
文件数据。但不能长时间处理。请帮忙,thanks.following 是 csv 文件处理的例子。
const multer = require('multer');
const fs = require('fs')
const csv = require('csv-parser')
const fileStorageEngine = multer.memoryStorage({
destination: (req, file, cb) => {
cb(null, './csv');
}
,
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
const upload = multer({storage:fileStorageEngine});
app.post('/uploadcsv',upload.single("upfile"),async(req,res)=>{
const file = req.file;
fs.createReadStream(`./csv/${file.originalname}`)
.pipe(csv())
.on("data",(data)=>console.log(data));
res.send("file uploaded")
})
这里我使用的是适合我的 fs
模块,但我不想将数据存储在文件中,而是想以块的形式处理来自 req.file.buffer
的缓冲区数据
我被困在这里请帮忙。因为存储文件和读取同一个文件会导致进程变慢,因为 csv 文件有数千个数据。
想法是从缓冲区创建一个可读流,而不是将其写入文件,如下所示:
const multer = require('multer');
const { Readable } = require('stream');
const fs = require('fs')
const csv = require('csv-parser')
const fileStorageEngine = multer.memoryStorage({
destination: (req, file, cb) => {
cb(null, './csv');
}
,
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
const upload = multer({storage:fileStorageEngine});
app.post('/uploadcsv',upload.single("upfile"),async(req,res)=>{
const file = req.file;
const stream = Readable.from(file.buffer);
stream.pipe(csv()).on("data",(data)=>console.log(data));
res.send("file uploaded")
})
我正在处理来自使用 multer
、csv-parser
创建 json 对象的请求的 csv
文件数据。但不能长时间处理。请帮忙,thanks.following 是 csv 文件处理的例子。
const multer = require('multer');
const fs = require('fs')
const csv = require('csv-parser')
const fileStorageEngine = multer.memoryStorage({
destination: (req, file, cb) => {
cb(null, './csv');
}
,
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
const upload = multer({storage:fileStorageEngine});
app.post('/uploadcsv',upload.single("upfile"),async(req,res)=>{
const file = req.file;
fs.createReadStream(`./csv/${file.originalname}`)
.pipe(csv())
.on("data",(data)=>console.log(data));
res.send("file uploaded")
})
这里我使用的是适合我的 fs
模块,但我不想将数据存储在文件中,而是想以块的形式处理来自 req.file.buffer
的缓冲区数据
我被困在这里请帮忙。因为存储文件和读取同一个文件会导致进程变慢,因为 csv 文件有数千个数据。
想法是从缓冲区创建一个可读流,而不是将其写入文件,如下所示:
const multer = require('multer');
const { Readable } = require('stream');
const fs = require('fs')
const csv = require('csv-parser')
const fileStorageEngine = multer.memoryStorage({
destination: (req, file, cb) => {
cb(null, './csv');
}
,
filename: (req, file, cb) => {
cb(null, file.originalname);
},
});
const upload = multer({storage:fileStorageEngine});
app.post('/uploadcsv',upload.single("upfile"),async(req,res)=>{
const file = req.file;
const stream = Readable.from(file.buffer);
stream.pipe(csv()).on("data",(data)=>console.log(data));
res.send("file uploaded")
})