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 }));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」