You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 23:59:57