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

SpringBoot 3.1升级后多表单数据接口无法识别文件问题咨询

SpringBoot 3.1 升级后Multipart接口无法识别文件的原因及解决办法

核心原因

SpringBoot 3.x 基于 Spring 6,Spring MVC/WebFlux 对multipart/form-data请求的参数解析规则做了严格收紧:

  • 在Spring 5.x(对应Boot2.7)版本中,@RequestParam可以兼容解析multipart中的文件项,但Spring 6开始明确区分了@RequestParam和@RequestPart的职责:
    • @RequestParam仅用于解析普通表单字段(非文件类型的multipart项);
    • 文件类型的multipart项必须使用@RequestPart注解来绑定。
  • 你原代码中用@RequestParam("file") MultipartFile file,在Spring6中会被当作普通字符串参数解析,自然无法识别上传的文件。

修复方案

将文件参数的@RequestParam替换为@RequestPart即可,修改后的代码如下:

@PostMapping(path = "/file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public Mono<Object> upload(@RequestPart("fileRequest") String fileRequest, @RequestPart("file") MultipartFile file) throws IOException {
    return pinataService.uploadFile(file, fileRequest);
}

额外注意事项

  • 如果客户端传递的fileRequest是普通文本,需确保对应请求part的Content-Type为text/plain(或不指定,默认会被自动识别),避免Spring误解析为其他类型。
  • 若项目使用WebFlux,检查自定义MultipartResolver配置是否兼容Spring6的新规则,默认配置无需额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:22:44