首页 > 解决方案 > 为什么在Node.js中使用邮递员上传文件时请求正文为空

问题描述

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

用例:

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

请帮忙识别 req.body=[Object: null prototype] 的含义

标签: node.jshttppostmanmulterbody-parser

解决方案


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

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


推荐阅读