请求流程:A、B两个服务,A服务接收文件上传请求并通过B服务的Feign接口调用B服务透传文件数据,B服务接收文件内部处理逻辑;
一、B服务
接收文件接口:
/**
* 文件上传
*
* @param id id
* @param file 文件信息
*/
@PostMapping(value = "/upload/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void upload(@PathVariable("id") String id, @RequestPart("file") MultipartFile file) {
// 文件处理逻辑
}
consumes: 指定处理请求的提交内容类型(Content-Type) 为 multipart/form-data;
@RequestPart
用于将multipart/form-data
类型数据映射到控制器处理方法的参数中。除了@RequestPart
注解外,@RequestParam
同样可以用于此类操作。但在我调试过程中使用RequestParam会报错,拿不到文件数据,所以此处还是使用的 @RequestPart;
二、B服务的Feign接口:
/**
* 文件上传
*
* @param id id
* @param file 文件信息
*/
@PostMapping(value = "/upload/{id}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
void upload(@PathVariable("id") String id, @RequestPart("file") MultipartFile file);
三、A服务
/**
* 文件上传
*
* @param id id
* @param file 文件信息
*/
@PostMapping("/upload/{id}")
public void upload(@PathVariable("id") String id, @RequestParam("file") MultipartFile file) {
// 调用B的Feign接口
client.upload(id, file);
}