javascript - 如何解析 multer 返回的 javascript 对象?

标签 javascript node.js csv express multer

我正在尝试使用 multer 来处理 Express 中 csv 文件的上传,然后逐行解析文件。我能够将文件作为包含在 req.body 中的对象获取,但我无法解析它,因为它现在似乎只是一个对象,不再是 csv 字符串。如何从上传的文件中单独获取每一行? (应用程序/索引):

const csv = require('csvtojson');
const multer  = require('multer');
const upload = multer();

router.post('/distributor/:id/upload', upload.single(), function (req, res, 
next) {
  req.setTimeout(600000);
  console.log(req.body) 
  next()
}, function (req, res, next) {
    //calling req.body here returns an object with \r between each line from 
    file, but I cannot seem to parse each line
    res.end();
}) 

我尝试在第二个函数中使用 csvtojson,如下所示:

 csv()
.fromString(req.body.toString(UTF8))
.subscribe((csvLine)=>{
    console.log(csvLine); 
} 

但这只是尝试解析整个对象,而不是其中的每一行。以下是 multer 返回的对象的片段:

{"UPC,Price,SKU,Title\r\n043171884536,1.17,538397,ORANGE YARN EGGS SIZE 4 - 
4 PK\r\n043171080044,1.39,942227,MIKE'S YELLOW/CORN GLO 
BAIT\r\n035011000046,1.98,161687,REPLACEMENT BRAKE 
PADS\r\n056389001503,1.79,41582,FIRE 
LIGHTERS\r\n087837005156,5.04,266320,PLATINUM GREEN 1/4LB SPOOL 
25#\r\n046295070045,1.54,604652,MIKE'S GARLIC GLO-SCENT 
OIL\r\n043171660161,1.02,126011,THREAD  RED 100'\r"} 

编辑** 在我使用 bodyParser 之前。我在一个问题中看到使用 bodyParser 和 multer 不起作用,所以我将其注释掉了。现在,我没有得到正文对象、文件对象或文件对象。我尝试使用 upload.none() 并在请求中发送相同的文件,看看是否可以让它出错并显示消息“LIMIT_UNEXPECTED_FILE”,但它没有,所以看来 multer 甚至无法识别该文件正在发送。我正在 Postman 中对此进行测试,内容类型设置为 false,正文为带有附加文件的二进制文件。尝试以这种方式测试请求是否有问题?

最佳答案

在 multer 文档提供的示例中,req.body 对象将包含表单中的文本字段,req.file 将包含已上传的文件:

app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file is the `avatar` file
  // req.body will hold the text fields, if there were any
})

您是否尝试过使用file对象?类似于以下内容:

router.post('/distributor/:id/upload', upload.single(), function (req, res, next) {
  req.setTimeout(600000);
  console.log(req.body)
  console.log(req.file)
  csv()
  .fromFile(req.file.path)
  .then((jsonObj)=>{
    console.log(jsonObj);
    //loop through array of objects here
  }) 
  next()
});

关于javascript - 如何解析 multer 返回的 javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51776343/

相关文章:

java - 是否有在 Spring Boot 上下文中查询巨大 CSV 的最佳实践?

javascript - 找不到快速路由器

node.js - 如何在 Twitter Strategy、Passport JS 中传递数据?

javascript - ISP注入(inject)广告导致js无法正常运行

javascript - 如何使用给定 ID 进行快速重定向?

javascript - babel-cli vs babel-preset-es2015 vs babel-register vs babel-core?

Python 选择特定的行和列

python - 在 Python 中使用 FFprobe

javascript - Electron 包 : reduce the package size

javascript - $.addClass 不会立即更新 DOM 吗?