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

Spring Boot接口报错:不支持multipart/form-data媒体类型

解决方案:HttpMediaTypeNotSupportedException 处理方案

问题根源

你的接口使用@RequestBody接收JSON格式数据,但请求发送的是multipart/form-data类型(包含文件上传),Spring的@RequestBody默认仅支持application/json等非表单媒体类型,因此触发媒体类型不支持的异常。

具体修改步骤

1. 调整接口注解与参数绑定

去掉@RequestBody,改用@ModelAttribute(或直接省略,Spring会自动绑定表单数据),同时在@PostMapping中明确指定支持multipart/form-data类型:

import org.springframework.http.MediaType;

@PostMapping(value = "/modificar-produto/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Transactional
public ResponseEntity<Object> modificarProduto(@PathVariable Long id, 
                                               @Valid @ModelAttribute DadosAtualizacaoProduto dadosAtualizacao,
                                               @RequestParam boolean deletarImagem, 
                                               @RequestParam int posicaoImagem) throws IOException {
    // 原有业务逻辑保持不变
}

2. 确保实体类字段类型正确

检查DadosAtualizacaoProduto中的imagem字段,必须定义为MultipartFile类型(用于接收上传的文件):

如果是record类型:

import org.springframework.web.multipart.MultipartFile;

public record DadosAtualizacaoProduto(
    String nome,
    String descricao,
    BigDecimal preco,
    MultipartFile imagem
) {}

如果是普通类:

import org.springframework.web.multipart.MultipartFile;

public class DadosAtualizacaoProduto {
    private String nome;
    private String descricao;
    private BigDecimal preco;
    private MultipartFile imagem;

    // 必须提供getter和setter方法
    // getter...
    // setter...
}

3. 调整请求发送方式

确保请求使用multipart/form-data格式提交:

  • 在Insomnia/Postman中选择form-data选项
  • 分别添加nome、descricao、preco等文本参数(对应实体类字段)
  • 添加imagem字段,类型选择File并上传文件
  • 同时携带deletarImagem和posicaoImagem两个请求参数

为什么之前@ModelAttribute无效?

大概率是以下原因:

  • 没有在@PostMapping中指定consumes = MediaType.MULTIPART_FORM_DATA_VALUE,Spring无法识别要处理表单数据
  • DadosAtualizacaoProduto中的imagem字段类型不是MultipartFile,无法绑定上传的文件
  • 请求参数名与实体类字段名不匹配(比如请求里的参数是image,但实体类里是imagem)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:43:17