1.问题描述:
有一个上传图片的接口,后端限制了上传图片的最大尺寸不能超过500KB
//限制大小,只能为500kb以下图片
long fileSizeInBytes = headerImage.getSize();
long fileSizeInKB = fileSizeInBytes / 1024; // 转换为KB
if (fileSizeInKB >= 500) {
model.addAttribute("errorInfo", "请上传小于500KB图片!");
return "site/setting";
}
<input type="file" accept="image/png,image/jpg,image/jpeg"
th:class="|custom-file-input ${errorInfo!=null?'is-invalid':''}|"
id="head-image" name="headerImage" lang="es" required>
<label class="custom-file-label" for="head-image" data-browse="文件">请选择一张图片</label>
<div class="invalid-feedback" th:text="${errorInfo}">
该账号不存在!
测试异常情况,上传1.3M图片,不仅前端没有正常显示错误信息,反而报错500,日志显示“ The field headerImage exceeds its maximum permitted size of 1048576 bytes.”
2.问题原因:
Spring Boot 默认上传文件大小不能超过 1M,所有如果测试上传的图片大小在500KB 到 1M 之间可以返回正常错误信息。但超过 1M就会报错500
3.解决思路:
修改 Spring Boot默认配置
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=1000MB
上述配置修改最大上传文件大小为100MB,最大请求文件大小为1000MB
参考文章:Spring Boot修改最大上传文件限制