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 })); 

posted on   久居我梦  阅读(171)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示