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正确操作步骤
- 选择请求方式为
POST,输入接口地址。 - 切换到
Body标签,选择form-data类型。 - 添加两个请求部分:
- 第一个部分:
Key填resume,Type选择File,然后选择本地简历文件。 - 第二个部分:
Key填employeeDTO,Type选择Text,在Value框中粘贴员工信息的JSON内容。
- 第一个部分:
额外说明
你的application.properties中的Multipart配置是正确的,不需要额外修改。Spring会自动处理Multipart请求的解析,只要接口参数注解使用正确即可。
内容的提问来源于stack exchange,提问作者arunDarkDev
相关产品推荐
相关产品推荐

