在Spring Boot中,@RequestBody
注解用于接收HTTP请求的请求体内容,而 Multipart
用于处理文件上传。默认情况下,这两者是不能同时使用的,因为HTTP请求的Content-Type头信息只能包含一个值。但你可以通过以下方法解决 @RequestBody
不能和 Multipart
同时使用的问题:
解决方法:
使用
@RequestPart
代替@RequestBody
: 在方法参数中使用@RequestPart
注解来接收请求体内容,而不是使用@RequestBody
。@RequestPart
注解可以同时处理普通参数和Multipart文件,允许你在一个方法中处理多种类型的参数。@PostMapping("/upload") public ResponseEntity<String> uploadFile( @RequestPart("data") YourRequestBodyType requestBody, @RequestPart("file") MultipartFile file) { // 处理请求体和文件上传逻辑 }
使用Map来接收参数: 如果你的请求体中包含多种类型的参数,可以使用
Map
来接收参数,然后在方法内部进行解析。@PostMapping("/upload") public ResponseEntity<String> uploadFile(@RequestParam Map<String, String> params, @RequestParam("file") MultipartFile file) { // 解析参数和文件上传逻辑 }
请根据你的实际需求选择上述方法之一来解决Spring Boot中 @RequestBody
不能和 Multipart
同时使用的问题。