如何修改AdminJS上传功能的maxFileSize限制?
解决AdminJS上传文件大小超出formidable限制的问题
问题分析
你在AdminJS的uploadFeature里配置了validation.maxSize,前端已正确显示对应大小限制,但服务器仍返回formidable的200MB报错,这是因为AdminJS的validation.maxSize仅负责前端验证和提示,并未覆盖formidable本身的默认上传限制(formidable默认最大文件大小为200MB)。
核心解决方案:修改代码配置formidable参数
需要在AdminJS的express集成配置中,单独设置formidable的文件大小限制,具体操作如下:
方式1:通过buildRouter传入配置
如果使用@adminjs/express的buildRouter方法创建路由,直接添加formidableOptions参数:
const router = buildRouter(admin, { formidableOptions: { maxFileSize: 500 * 1024 * 1024 // 与你validation中设置的500MB保持一致,若需1GB则设为1024*1024*1024 } });
方式2:手动配置express-formidable中间件
若你是手动挂载express中间件,可直接给express-formidable传入限制参数:
import express from 'express'; import formidableMiddleware from 'express-formidable'; const app = express(); app.use(formidableMiddleware({ maxFileSize: 500 * 1024 * 1024 }));
Nginx补充配置(若使用反向代理)
如果你的服务经过Nginx反向代理,必须同步修改Nginx配置,避免Nginx提前截断大文件:
- 打开Nginx配置文件(通常路径为
/etc/nginx/nginx.conf或站点配置/etc/nginx/sites-available/[你的站点名]) - 在
server或对应location块中添加:
client_max_body_size 500M; # 数值与后端设置保持一致,如1GB则写1G
- 重启Nginx生效:
sudo systemctl restart nginx
注意事项
- 确保后端formidable的
maxFileSize与AdminJS的validation.maxSize数值一致,避免前后端限制不一致 - 若使用AWS S3存储,无需额外配置桶大小限制(S3默认无上传大小限制,除非手动设置了桶策略)
内容的提问来源于stack exchange,提问作者0021654780
相关产品推荐
相关产品推荐

