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
相关产品推荐
相关产品推荐

