当我们通过feign调用接口,传文件参数,尤其是多个入参时
可能会报错“Current request is not a multipart request”和“Error converting request body”,这是因为Feign客户端在发送请求时没有将请求标记为multipart类型。在Feign客户端调用接口时,需要确保将文件上传的请求标记为multipart类型。
解决方案:两注解+1参数
- @RequestPart(对于文件参数,声明这是multipart类型)
@RequestParam(POST只能有一个body,多个参数时需要使用该注解) - consumes = MediaType.MULTIPART_FORM_DATA_VALUE(声明接口提供方入参是multipart/form-data)
Demo:
Feign接口:
@PostMapping(value = "path", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
void importFile(@RequestParam @RequestPart MultipartFile file, @RequestParam Long bizId);
Controller接口提供:
@PostMapping(value = "path")
void importFile(@RequestParam @RequestPart MultipartFile file, @RequestParam Long bizId);