SpringBoot+JSP项目Summernote保存图片遇上传大小超限问题求助
解决Summernote上传图片触发SpringBoot文件大小超限问题
可能的原因及对应方案
1. 确认SpringBoot配置的正确性与生效范围
- 确保配置项写在正确的配置文件中(如
application.properties或application.yml),如果是多环境配置,要对应到当前激活的环境文件。 - 检查配置格式:
- Properties格式:
spring.servlet.multipart.max-file-size=50MB spring.servlet.multipart.max-request-size=50MB server.tomcat.max-swallow-size=-1 server.tomcat.max-form-content-size=50MB - YAML格式(注意冒号后需加空格):
spring: servlet: multipart: max-file-size: 50MB max-request-size: 50MB server: tomcat: max-swallow-size: -1 max-form-content-size: 50MB
- Properties格式:
- 重启项目,确保配置生效。
2. 检查是否存在自定义MultipartResolver覆盖默认配置
如果项目中自定义了MultipartResolver Bean,SpringBoot的自动配置会失效,需手动设置文件大小参数:
@Bean public CommonsMultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setMaxUploadSizePerFile(52428800); // 50MB,单位字节 resolver.setMaxUploadSize(52428800); return resolver; }
如果使用StandardServletMultipartResolver,需配合@MultipartConfig注解:
@SpringBootApplication @MultipartConfig(maxFileSize = 52428800, maxRequestSize = 52428800) public class YourBootApplication { public static void main(String[] args) { SpringApplication.run(YourBootApplication.class, args); } }
3. 强制Summernote使用表单上传而非Base64编码
Summernote默认可能将图片转为Base64编码后提交,Base64会使文件体积增加约30%,8MB图片转码后约10.4MB,可能触发隐性的请求大小限制。修改JS配置,强制用表单上传:
$('.summernote').summernote({ height: 350, maximumImageFileSize: 52428800, callbacks: { onImageUpload: function(files) { const formData = new FormData(); formData.append('file', files[0]); $.ajax({ url: '/your-image-upload-api', // 替换为你的后端上传接口 type: 'POST', data: formData, contentType: false, processData: false, success: function(res) { // 上传成功后插入图片到编辑器 $(this).summernote('insertImage', res.imageUrl); }.bind(this) }); } } });
4. 排查其他过滤器或安全框架的限制
检查项目中是否存在Spring Security、Shiro或自定义过滤器,这些组件可能独立设置了请求大小限制,需对应调整其配置。
内容的提问来源于stack exchange,提问作者Anh Nguyễn
相关产品推荐
相关产品推荐

