Spring 5.x升级至6.1.13:CommonsMultipartResolver替代方法疑问
Spring 6.1.13 替换 CommonsMultipartResolver 后的配置方案
1. 替代 setMaxUploadSize 的处理方式
StandardServletMultipartResolver 依赖Servlet容器的原生上传支持,因此不再提供直接的setMaxUploadSize方法,需通过以下方式配置上传大小限制:
传统Servlet项目(web.xml配置)
在对应Servlet的配置中添加<multipart-config>节点:
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <multipart-config> <!-- 单个文件最大上传大小(字节),示例为10MB --> <max-file-size>10485760</max-file-size> <!-- 整个请求的最大大小(含文件和参数),示例为20MB --> <max-request-size>20971520</max-request-size> <!-- 文件超过该阈值后写入磁盘(字节),示例为4MB --> <file-size-threshold>4194304</file-size-threshold> </multipart-config> </servlet>
Java代码配置(含Spring Boot)
纯Java Servlet配置
@Bean public DispatcherServlet dispatcherServlet() { DispatcherServlet servlet = new DispatcherServlet(); MultipartConfigElement multipartConfig = new MultipartConfigElement( null, // 临时文件存储路径,默认使用容器临时目录 10485760L, // maxFileSize 20971520L, // maxRequestSize 4194304 // fileSizeThreshold ); servlet.setMultipartConfig(multipartConfig); return servlet; }
Spring Boot 配置文件方式(推荐)
直接在application.properties或application.yml中配置:
# 单个文件最大上传大小 spring.servlet.multipart.max-file-size=10MB # 整个请求的最大大小 spring.servlet.multipart.max-request-size=20MB # 文件写入磁盘的阈值 spring.servlet.multipart.file-size-threshold=4MB
2. 替代 setDefaultEncoding 的处理方式
StandardServletMultipartResolver 默认沿用请求编码,若需统一设置默认编码,可通过以下方式:
web.xml配置
给DispatcherServlet添加初始化参数:
<servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>defaultEncoding</param-name> <param-value>UTF-8</param-value> </init-param> </servlet>
Java代码配置
纯Java Servlet配置
@Bean public DispatcherServlet dispatcherServlet() { DispatcherServlet servlet = new DispatcherServlet(); servlet.setDefaultEncoding("UTF-8"); // 若同时配置上传大小,添加MultipartConfigElement设置即可 return servlet; }
Spring Boot 配置文件方式(推荐)
spring.servlet.multipart.default-encoding=UTF-8
额外提示
- 升级后可完全移除Apache Commons FileUpload依赖,
StandardServletMultipartResolver基于Servlet 3.0+原生实现,无需额外依赖。 - 配置完成后务必测试上传功能,验证编码和大小限制是否符合预期,避免出现乱码或上传失败问题。
内容的提问来源于stack exchange,提问作者MADHURA PRASAD S
相关产品推荐
相关产品推荐

