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

Spring Boot使用@RequestPart传多类型参数上传文件报错

问题原因分析

这个异常的核心原因是Spring对非String类型的@RequestPart参数默认的媒体类型解析逻辑限制,具体细节如下:

  • 当使用@RequestPart接收Integer类型参数时,Spring默认会调用MappingJackson2HttpMessageConverter(JSON解析器)处理该参数,但前端发送的表单中,这个参数对应的part的Content-Type是application/octet-stream,而该转换器仅支持解析application/json类的媒体类型,无法处理二进制流类型,因此抛出HttpMediaTypeNotSupportedException异常。

  • 当把number改为String类型时,Spring会切换使用StringHttpMessageConverter,这个转换器支持包括application/octet-stream在内的绝大多数文本类媒体类型,能直接将二进制流转换为字符串并适配为String类型参数,所以接口可以正常运行。

  • 在@PostMapping中指定consumes属性为{MULTIPART_FORM_DATA_VALUE,APPLICATION_JSON_VALUE}仅声明了接口接收的整体请求类型为multipart/form-data,无法覆盖单个@RequestPart参数的媒体类型解析规则,因此无法解决问题。

如果要保留Integer类型参数,可参考两种解决方案:

  • 前端发送number参数时,显式指定该part的Content-Type为application/json,并将值以JSON格式传递(例如"123");
  • 后端改用@RequestParam接收number参数,该注解会自动处理表单中的普通文本参数,无需关注单个part的媒体类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:05:43