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

上传带图片的产品时触发HttpMediaTypeNotSupportedException异常求助

问题排查与解决方案

核心原因

这个异常是因为Spring MVC无法处理application/octet-stream类型的请求内容,通常和文件上传时的请求格式、接口参数配置不匹配有关。

具体排查步骤

  • 修正控制器接口配置
    确保上传接口的@PostMapping指定正确的消费类型,并且参数绑定符合multipart请求要求:

    @PostMapping(value = "/products", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseEntity<?> addProduct(@ModelAttribute Product product, 
                                        @RequestParam("image") MultipartFile image) throws IOException {
        // 服务层处理:将MultipartFile转为byte[]存入product
        product.setImage(image.getBytes());
        productService.saveProduct(product);
        return ResponseEntity.ok("产品上传成功");
    }
    

    注意:不要用@RequestBody接收实体,multipart/form-data请求无法通过@RequestBody解析。

  • 调整Postman请求方式

    1. 选择POST请求,输入接口URL
    2. 切换到Body标签,选择form-data格式
    3. 添加产品的普通字段(如name、price等,参数名要和实体类属性一致)
    4. 添加文件字段,参数名对应控制器里的@RequestParam参数名(比如image),类型选择File,然后选择本地图片文件
    5. 不要手动设置Content-Type请求头,Postman会自动生成包含boundary的multipart/form-data请求头,手动设置会导致解析失败
  • 检查实体类配置
    如果实体类中存储图片的字段是byte[]类型,确保添加JPA的@Lob注解支持大字段存储;不要在实体类中直接用MultipartFile作为属性,它是Spring上传专用类型,无法直接序列化或持久化。

  • 确认Spring Boot自动配置
    Spring Boot默认已自动配置StandardServletMultipartResolver,无需额外配置,除非自定义了Multipart相关配置导致冲突。可检查application.yml/application.properties中的spring.servlet.multipart配置项,确保max-file-size、max-request-size等参数合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:17:39