Postman form-data请求无法被Express解析,raw/urlencoded请求正常
问题核心原因
Express 内置的 express.json() 和 express.urlencoded() 中间件不支持解析 multipart/form-data 类型的请求体,也就是你在 Postman 里选择 form-data 时对应的请求格式,所以才会出现 raw 和 urlencoded 格式能正常解析,form-data 无法解析的情况。
解决方案
要处理 form-data 类型的请求,需要引入专门解析 multipart 格式的中间件,常用方案如下:
- 仅处理普通表单字段(无文件上传需求):可使用
express-formidable或multer搭配内存存储 - 需同时处理文件上传:优先使用
multer中间件
配置示例(multer 方案)
- 安装依赖
npm install multer
- 业务代码中引入配置
const multer = require('multer'); // 配置为仅解析普通表单字段,不接收文件的模式 const upload = multer().none(); // 仅在需要接收 form-data 的路由上挂载中间件 app.post('/你的接口路径', upload, (req, res) => { // 此时 req.body 即可正常拿到 form-data 提交的字段 console.log(req.body); res.send(req.body); })
注意事项
- 不要将 multer 中间件全局挂载,建议仅在需要接收 form-data 格式的路由上单独使用,避免额外性能消耗
- 如果需要接收上传文件,可参考 multer 官方文档配置对应的存储规则、文件过滤逻辑即可
问题参考截图
- Postman form-data 请求截图:

- body->raw 请求截图:

内容的提问来源于stack exchange,提问作者omar anas
相关产品推荐
相关产品推荐

