Feign远程调用上传图片功能
前提:使用easypoi上传excel时,由于已有对应的上传图片接口,所以需要将excel表格中解析出的图片去远程调取其他服务上对应的上传图片接口。
由于对应的上传图片接口需要的参数为 MultipartFile,所以需要先将本地自己的图片路径转为该参数类型,如下所示:
// 图片上传
File file = new File("D:/home/user");
FileInputStream fileInputStream = new FileInputStream(file);
// upload
MultipartFile file1 = new MockMultipartFile("file", file.getName(),
ContentType.MULTIPART_FORM_DATA.toString(), fileInputStream);
Map<String, Object> upload = null;
ReturnResult upload1 = rpcBasicService.upload(file1);
需要注意点:
这里的 “file”, 我们需要和远程接口rpcBasicService.upload(file1)中的upload方法参数类型注解中的value值内容相同,否则会报错 Required request part ‘file’ is not present,下面设置为 MULTIPART_FORM_DATA是因为我们上传文件时是需要设置Content-Type为 "multipart/form-data" 类型
在@PostMapping()中我们需要添加 consumes = MediaType.MULTIPART_FORM_DATA_VALUE,这也是为了将Content-Type为 "multipart/form-data" 的类型,同时在参数中我们需要添加的注解为 @RequestPart(),而不是 @RequestParam(),在该注解中有一个value值,该值的名称必须要和上图中 new MockMultipartFile(“file”,xxxx,xxxx,xxx) 中的“file”名称相同,否则报错信息就是刚刚提过的 Required request part ‘file’ is not present。