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

Spring MVC 6.0.6文件上传报错:未提供多部分配置如何解决?

Spring MVC 6.0.6 文件上传报错 Unable to process parts as no multi-part configuration has been provided 解决办法

核心原因

这个错误本质是Tomcat未检测到处理请求的DispatcherServlet带有Multipart配置——即便你在Controller或配置类上加了@MultipartConfig,但该注解是Servlet规范注解,必须直接作用于Servlet类(此处即DispatcherServlet)才能被Tomcat识别。单元测试依赖MockMvc模拟请求,不涉及容器的Multipart处理逻辑,所以不会触发该错误。

解决步骤

1. 给DispatcherServlet添加Multipart配置(编程式注册场景)

如果用Java代码注册DispatcherServlet,直接为其设置MultipartConfigElement:

public class WebAppInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(WebConfig.class);

        DispatcherServlet dispatcherServlet = new DispatcherServlet(ctx);
        // 配置Multipart参数,可根据业务需求调整数值
        MultipartConfigElement multipartConfig = new MultipartConfigElement(
                null, // 临时文件存储路径,默认使用Tomcat临时目录
                5 * 1024 * 1024, // 单个文件最大限制(5MB)
                20 * 1024 * 1024, // 整个请求的文件总大小限制(20MB)
                1 * 1024 * 1024 // 文件超过此阈值时写入磁盘(1MB)
        );
        dispatcherServlet.setMultipartConfig(multipartConfig);

        ServletRegistration.Dynamic reg = servletContext.addServlet("dispatcher", dispatcherServlet);
        reg.setLoadOnStartup(1);
        reg.addMapping("/");
    }
}

2. 验证StandardServletMultipartResolver配置

确保Spring MVC的Multipart解析器配置正确,在Web配置类中:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Bean
    public StandardServletMultipartResolver multipartResolver() {
        StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
        // 可选:延迟解析,避免提前处理Multipart请求
        resolver.setResolveLazily(true);
        return resolver;
    }
}

3. web.xml配置场景的处理方式

如果用web.xml注册DispatcherServlet,需在<servlet>标签内添加<multipart-config>节点:

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-web-config.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <!-- 配置Multipart参数 -->
    <multipart-config>
        <max-file-size>5242880</max-file-size>
        <max-request-size>20971520</max-request-size>
        <file-size-threshold>1048576</file-size-threshold>
    </multipart-config>
</servlet>

验证

重启Tomcat后,用Postman发送multipart/form-data请求到http://127.0.0.1:8080/upload,即可正常处理文件上传,不再返回500错误。

内容的提问来源于stack exchange,提问作者radumanolescu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:47:28