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

如何在Express.js中提升form-data请求大小限制?

解决Express中FORM-DATA请求的PayloadTooLargeError问题

这个错误是因为Express默认对请求体的大小做了限制,当你发送的FORM-DATA内容(比如上传的文件)超过这个默认限制时,就会抛出PayloadTooLargeError。下面分两种常见场景给出解决方案:

1. 若使用Express内置的body-parser中间件(express.json/urlencoded)

虽然FORM-DATA通常不会用这两个中间件解析,但如果你的项目中配置了它们,可以直接在中间件初始化时设置limit参数调整大小:

const express = require('express');
const app = express();

// 调整JSON请求体限制为10MB
app.use(express.json({ limit: '10mb' }));
// 调整URL编码请求体限制为10MB,extended设为true支持复杂数据结构
app.use(express.urlencoded({ extended: true, limit: '10mb' }));

2. 处理FORM-DATA推荐使用multer中间件

FORM-DATA请求(尤其是包含文件上传的场景)一般用multer来解析,这时候需要在multer的配置中设置文件大小限制:

首先确保已安装multer:

npm install multer

然后在代码中配置:

const express = require('express');
const multer = require('multer');
const app = express();

// 配置存储方式,这里以内存存储为例(适合临时处理小文件),也可以用磁盘存储
const storage = multer.memoryStorage();

// 初始化multer,设置文件大小限制为10MB(可根据需求调整,比如'50mb')
const upload = multer({
  storage: storage,
  limits: {
    fileSize: 10 * 1024 * 1024 // 10MB,单位是字节
  }
});

// 在路由中使用multer中间件,比如单文件上传
app.post('/api/upload', upload.single('file'), (req, res) => {
  // req.file就是上传的文件对象,req.body是FORM-DATA中的其他字段
  res.status(200).json({ message: '上传成功', file: req.file });
});

// 如果是多文件上传,用upload.array
// app.post('/api/upload-multiple', upload.array('files', 5), (req, res) => {
//   res.status(200).json({ message: '多文件上传成功', files: req.files });
// });

注意事项

  • 不要盲目设置过大的限制,避免服务器被大请求拖垮,根据业务实际需求调整即可。
  • 如果是生产环境,建议配合服务器(如Nginx)的请求大小限制一起调整,避免Nginx先拦截了大请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:08