项目场景
提示:项目相关背景:
项目场景:
- 基于spring boot的文件上传服务,使用minio作为分布式文件存储系统。
- 用户需要上传超过1mb的文件到minio存储桶中。
问题描述
前端传图片给后端时,后端服务器报错:
required request parameter 'examcard' for method parameter type string is not present:
文件上传失败,系统报错显示文件大小超过限制。具体错误信息表明:
- 当前上传的文件超过了1048576字节(1mb)的限制
- 错误与minio服务无关,是spring boot应用层的限制
原因分析
一开始以为是图片大小超过了minio单次上传文件的大小,后来排查发现是超过了spring boot默认的文件上传限制。
spring boot默认配置了严格的文件上传限制:
- 默认
max-file-size
为1mb(1048576字节) - 默认
max-request-size
也为1mb - 这些限制是spring 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)
这些值可根据实际业务需求调整
修改后需要重启应用生效
注意:
生产环境应根据实际硬件资源和业务需求合理设置这些值,避免设置过大导致内存溢出风险。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论