Spring Boot 3.2.4中Multipart请求参数为空问题求助
针对Spring Boot从3.1.0升级到3.2.4后,multipartParameterNames为空导致@RequestParam获取值为null的问题,可按以下方案排查解决:
移除
@EnableWebMvc注解
如果你的Web配置类上标注了@EnableWebMvc,它会覆盖Spring Boot的Web自动配置逻辑,包括Multipart解析器的默认配置。移除该注解,让Spring Boot自动配置StandardServletMultipartResolver。调整Multipart配置参数
在application.properties或application.yml中确认并修正Multipart相关配置:# 确保Multipart功能开启 spring.servlet.multipart.enabled=true # 关闭延迟解析(避免参数获取时机异常) spring.servlet.multipart.resolve-lazily=false # 根据业务需求设置文件大小限制 spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB改用
@RequestPart注解绑定参数
对于multipart/form-data类型的请求,Spring官方更推荐使用@RequestPart来绑定普通参数和文件,尤其是混合参数场景。修改控制器代码如下:@RequestPart(value = "transactionId", required = false) UUID transactionId, @RequestPart(value = "file", required = false) final MultipartFile file排查自定义MultipartResolver
如果项目中存在自定义的MultipartResolverBean,检查其配置是否正确。若无需自定义实现,直接删除该Bean,使用Spring Boot自动配置的默认实例即可。验证请求格式与参数名
确认前端发送的请求Content-Type为multipart/form-data,且transactionId、file的参数名与后端注解中的名称完全一致(大小写敏感)。可通过Postman、Chrome开发者工具等工具查看请求的Form Data部分是否正确传递。
内容的提问来源于stack exchange,提问作者user3036282

