You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express中通过Axios发送Base64图片触发maxFieldsSize超限错误

解决Express中multipart/form-data传Base64图片的maxFieldsSize超限错误

错误根源

你碰到的Error: maxFieldsSize 2097152 exceeded,是因为multipart/form-data表单里单个字段的大小超过了默认2MB限制。而你之前配置的bodyParser.text、express.json、bodyParser.urlencoded这些中间件完全不处理multipart类型的请求,express.bodyParser更是早已被废弃,所以这些配置根本没起作用。

解决方案:用multer处理multipart请求

Express官方推荐使用multer来处理multipart/form-data类型的请求,它能直接配置字段大小限制:

  1. 安装multer
npm install multer
  1. 替换原有无效中间件,配置multer
    删掉你之前那些没用的中间件代码,换成下面的配置:
const multer = require('multer');

// 配置单个字段的最大大小(这里设为500MB,可根据需求调整)
const upload = multer({
  limits: {
    fieldSize: 500 * 1024 * 1024 // 500MB,单位为字节
  }
});

// 全局应用multer,处理所有multipart请求
app.use(upload.any());

如果只想针对特定路由处理:

// 比如给/post-image路由配置multipart处理
app.post('/post-image', upload.any(), (req, res) => {
  // 从req.body中获取Base64图片字段
  const base64Image = req.body.image;
  // 后续业务逻辑
  res.send('图片接收成功');
});
  1. Axios发送请求的注意点
    确保Axios正确构造请求,不要手动设置Content-Type,让Axios自动处理边界标识:
const formData = new FormData();
formData.append('image', base64ImageString);

axios.post('/your-api-endpoint', formData, {
  headers: {
    // 不要手动加这行:'Content-Type': 'multipart/form-data',Axios会自动处理
  }
});

关键说明

  • multer的limits.fieldSize就是对应报错里的maxFieldsSize,按需调整数值即可。
  • 彻底弃用旧的bodyParser multipart相关配置,完全用multer替代。

内容的提问来源于stack exchange,提问作者Gabriel Costa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:05:23