SpringCloud下通过feign进行文件上传
在springclod项目下,通过feign的内部调用进行文件上传
和一般的feign调用会有一点点区别,主要是服务提供者(feign接口)的定义有些变化
Feign服务提供者
@FeignClient( value = AppConstant.APPLICATION_RESOURCE_NAME, fallback = IOssClientFallback.class ) public interface IOssClient { String API_PREFIX = "/client"; String PUT_FILE = API_PREFIX + "/put-file"; /** * 上传文件 * * @param file 资源编号 * @param tenantId * @return R */ @PostMapping(value = PUT_FILE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE) @SneakyThrows R<Object> putFile(@RequestPart("file") MultipartFile file, @RequestParam("tenantId") String tenantId); }
主要是@RequestMapping里面的consumes属性还有@RequestPart("file")
至于@RequestParam和@RequestPart的区别如下(摘抄至网络)
1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
3.@RequestParam也同样支持multipart/form-data请求。
4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。
心里有束光,眼里有片海