在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)。