ExpressJS接口用Postman传form-data时req.body为空求助
解决Express中form-data提交时req.body为空的问题
Express默认的express.urlencoded()中间件仅支持解析application/x-www-form-urlencoded格式的数据,无法处理multipart/form-data格式。要解析form-data并将数据存入req.body,需要使用multer中间件。
步骤1:安装multer
执行以下命令安装依赖:
npm install multer # 或者使用yarn yarn add multer
步骤2:修改app.js配置
在你的app.js中引入并配置multer,补充原有中间件逻辑:
const express = require('express'); const path = require('path'); const cookieParser = require('cookie-parser'); const logger = require('morgan'); const dotenv = require('dotenv').config(); const databaseConnection = require('./config/database'); // 新增:引入multer const multer = require('multer'); const indexRouter = require('./routes/index.router'); const productRouter = require('./routes/product.router'); const userRouter = require('./routes/user.router'); databaseConnection(); const app = express(); app.use(logger('dev')); app.use(express.json()); // 新增:配置multer,解析所有form-data字段(含文本和文件) const upload = multer(); app.use(upload.any()); // 保留原urlencoded中间件,兼容x-www-form-urlencoded格式 app.use(express.urlencoded({ extended: false })); app.use(cookieParser()); app.use(express.static(path.join(__dirname, 'public'))); app.use('/', indexRouter); app.use('/api/v1/product', productRouter); app.use('/api/v1/user', userRouter); app.all('*', (req, res) => { res.status(404).json({ status: false, message: `The requested URL '${req.url}' does not exist` }); }) module.exports = app;
说明
multer()默认使用内存存储,不会将上传文件保存到磁盘,适合仅需解析表单文本字段的场景;若需要持久化文件,可配置磁盘存储路径。upload.any()会解析form-data中的所有字段:普通文本字段存入req.body,文件字段存入req.files。- 保留
express.urlencoded()可继续兼容x-www-form-urlencoded格式的请求。
内容的提问来源于stack exchange,提问作者sugnay patel
相关产品推荐
相关产品推荐

