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

Spring Boot:multipart/form-data POST正常但PATCH请求抛MultipartException求助

问题分析与解决方案

问题根源

Spring的CommonsMultipartResolver默认仅允许POST、PUT请求处理multipart/form-data类型的请求,PATCH方法不在默认允许的请求方法列表中,这就是同一份请求数据用POST正常、用PATCH就抛出MultipartException的核心原因。

解决方案

方案1:修改CommonsMultipartResolver配置,允许PATCH方法

在你定义multipartResolver Bean的代码中,显式添加允许PATCH方法:

public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
    @Bean(name = "multipartResolver")
    public CommonsMultipartResolver multipartResolver() {
        CommonsMultipartResolver resolver = new CommonsMultipartResolver();
        // 添加PATCH到允许的请求方法列表
        resolver.setAllowedMethods("POST", "PUT", "PATCH");
        return resolver;
    }
}

方案2:改用Spring Boot默认的StandardServletMultipartResolver(推荐)

Spring Boot默认使用StandardServletMultipartResolver,适配性更好,只需两步配置:

  1. 在application.properties或application.yml中开启延迟解析(避免提前解析multipart数据导致的方法校验失败):
spring.servlet.multipart.resolve-lazily=true
  1. 移除自定义的CommonsMultipartResolver Bean,让Spring Boot自动配置生效。

额外注意事项

  • 你的curl命令中手动指定了Content-Type: multipart/form-data,但curl会自动生成包含正确boundary的Content-Type头,手动指定反而可能引发解析错误,建议删除该header参数。
  • 检查项目依赖:你同时引入了spring-boot-starter-data-mongodb和spring-boot-starter-data-mongodb-reactive,若无需响应式MongoDB支持,建议移除其中一个,避免潜在的依赖冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:20:30