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

Spring Boot接收multipart中application/octet-stream类型Part遇415错误求助

解决方案

方法一:改用@RequestParam获取MultipartFile手动解析

直接通过MultipartFile获取表单part,不受其Content-Type限制,自行完成JSON到DTO的转换:

@PostMapping("/my-endpoint", consumes = [MULTIPART_FORM_DATA_VALUE])
fun handleData(@RequestParam("part1") part1: MultipartFile) {
    val objectMapper = ObjectMapper()
    val fooDto = objectMapper.readValue(part1.inputStream, FooDto::class.java)
    log.info("Received request: {}", fooDto)
}

该方式无需额外配置,绕开Spring消息转换器的匹配逻辑,兼容性最强。

方法二:扩展消息转换器支持application/octet-stream

如果希望继续使用@RequestPart,可以配置Spring的Jackson消息转换器,让它将application/octet-stream类型的part按JSON格式解析:

@Configuration
class WebConfig : WebMvcConfigurer {
    override fun configureMessageConverters(converters: MutableList<HttpMessageConverter<*>>) {
        val jacksonConverter = MappingJackson2HttpMessageConverter()
        // 为Jackson转换器添加application/octet-stream媒体类型支持
        jacksonConverter.supportedMediaTypes = jacksonConverter.supportedMediaTypes + MediaType.APPLICATION_OCTET_STREAM
        converters.add(jacksonConverter)
    }
}

配置完成后,原接口方法无需修改即可正常接收Content-Type为application/octet-stream的part,Spring会自动完成流到DTO的转换。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 03:03:29