为什么在Node.js中使用邮递员上传文件时请求正文为空

时间:2019-03-04 15:30:53

标签: node.js http postman multer body-parser

我正在尝试将文件从邮递员上传到Node.js服务器。我正在使用multer和body-parse来解析请求的主体。

用例:

  1. 当我在Postman中使用带有原始JSON的POST请求作为Body时,一切 工作正常,我可以看到与邮递员完全相同的req.body,也可以为req.body分配新的键值对,以便这些新变量可以在路由中的其他中间件中使用。
  2. 但是,当我尝试从邮递员上传带有表单数据的文件(如Postman中的Body)时,仍然可以从提供的req.body中获取值。但是在中间层之后,新分配给req.body的值(来自中间件)显示为损坏,就像req.body变为[Object:null prototype]。我可以确认Multer工作正常,但是Multer破坏了req.body数据(该数据是在路由中间件本身中创建的)

请帮助您确定req.body = [Object:null prototype]

的含义。

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。如果在功能中使用console.log(req.body)。您会注意到该主体等于[Object:null prototype],因为Multer正在处理请求,因为表单是多部分的。因此,如果您使用console.log(req)对象,则可以找到可以检索的值,也可以执行req。{Name_of_field}以获取值。

如果您需要澄清,请告诉我,我也许可以共享代码。

答案 1 :(得分:0)

Shivam Mahajan几乎写了这篇文章,但是:

您不能访问req.{Name_of_field}中的文本字段,而可以访问multer docs中的req.body.{Name_of_field}