SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决
目录
- 项目场景
- 问题描述
- 原因分析
- 解决方案
- 总结
项目场景
javascript提示:项目相关背景:
项目场景:
- 基于Spring Boot的文件上传服务,使用MinIO作为分布式文件存储系统。
- 用户需要上传超过1MB的文件到MinIO存储桶中。
问题描述
前端传图片给编程客栈后端时,后端服务器报错:
Required request parameter 'examCard' for method parameter type String is not present:
文件上传失败,系统报错显示文件大小超过限制。具体错误信息表明:
- 当前上传的文件超过了1048576字节(1MB)的限制
- 错误与http://www.devze.comMinIO服务无关,是Spring Boot应用层的限制
原因分析
一开始以为是图片大小超过了minio单次上传文件的大小,后来排查发现编程客栈是超过了Spring Boot默认的文件上传限制。
Spring Boot默认配置了严格的文件上传限制:
- 默认
max-file-size
为1MB(1048576字节) - 默认
max-request-size
也为1MB - 这些限制是Sphttp://www.devze.comring Boot的安全机制,防止大文件上传导致的服务资源耗尽
- MinIO服务本身没有这个限制,问题出在Spring Boot应用层
解决方案
在application.yml
配置文件中增加以下配置:
spring: servlet: multipart: max-file-size: 10MB # 单个文件最大大小限制 max-request-size: 100MB # 整个请求最大大小限制
配置说明:
max-file-size
:控制单个上传文件的最大尺寸(示例设置为10MB)max-request-size
:控制多文件上传时整个请求的最大尺寸(示例设置为100MB)
这些值可根据实际业务需求调整
修改后需要重启应用生效
注意:
生产环境应根据实际硬件资源和业务需求合理设置这些值,避免设置过大导致内存溢出风险。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论