express如何解析multipart/form-data格式的数据
最近在学习express,遇到了multipart/form-data请求参数接收不到的问题,控制台打印为{}空对象

问了下AI说是用express内置的方法app.use(express.urlencoded({ extended: true })); 或者下载body-parser使用app.use(bodyParser.urlencoded({ extended:true}));结果都不行,控制台还是打印空对象;

后来想到自己上传文件用的是multer插件,上传文件用的也是form-data格式,于是就开始尝试multer解决.
const multer = require('multer');
const upload = multer({})
//我想应用在全局
app.use(upload.none(),function (req, res, next) {
console.log("表单打印",req.body)
next();
});


成功了!!!
但是我发现我其他地方又出问题了 ̄へ ̄,他影响到了我文件上传的代码,可能是因为我全局配置了uoload.none();导致我文件上传那块解析不到fileList这个参数直接报错404。
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'public/images') // 确保这个文件夹已经存在
},
filename: function (req, file, cb) {
cb(null, Date.now() + "." + file.originalname.split(".").pop())
}
})
const upload = multer({ storage: storage,limits:{fileSize:1024 * 100},fileFilter:(req,file,cb)=>{
checkFileType(file,cb);
}})
router.post('/uploadMutiple', upload.array('fileList', 3), async(req, res) => {
/**其他代码省略*/
});
所以不能在全局配置,只能在单个请求中使用这个中间件
// 比如登录 router.post('/login', upload.none(),async function (req, res) { console.log(req.body);可以打印到form-data请求参数 })
不知道有没有大佬有更好的方法
app.use(express.urlencoded({ extended: true }));
浙公网安备 33010602011771号