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

SpringBoot能否同时接收Multipart文件与RequestBody?报错求助

问题原因及解决方案

核心错误点

你不能在同一个接口中同时使用@RequestBody和@RequestPart处理Multipart/form-data请求:

  • @RequestBody会要求Spring将整个请求体解析为JSON格式,但Multipart/form-data请求是由多个独立部分组成的(文件+其他参数),这会导致Spring误判请求类型,抛出Current request is not a multipart request错误。
  • 单独接收文件的接口能正常工作,是因为它只使用了@RequestPart,Spring会正确识别这是一个Multipart请求。

修复方案

将EmployeeDTO的接收方式从@RequestBody改为@RequestPart,同时明确接口的请求类型为Multipart/form-data:

修改后的控制器代码:

@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<EmployeeMinimalResponseDTO> postEmployee(
            @RequestPart(value = "resume") MultipartFile file,
            @RequestPart(value = "employeeDTO") EmployeeDTO employeeDTO) throws IOException {
     Employee employee = Converters.getEmployeeFromEmployeeDto(employeeDTO);
     employee.setResume(file.getBytes());
     return this.employeeService.postEmployee(employee);
}

Postman正确操作步骤

  1. 选择请求方式为POST,输入接口地址。
  2. 切换到Body标签,选择form-data类型。
  3. 添加两个请求部分:
    • 第一个部分:Key填resume,Type选择File,然后选择本地简历文件。
    • 第二个部分:Key填employeeDTO,Type选择Text,在Value框中粘贴员工信息的JSON内容。

额外说明

你的application.properties中的Multipart配置是正确的,不需要额外修改。Spring会自动处理Multipart请求的解析,只要接口参数注解使用正确即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 22:50:06