由上可知,報錯提示當前請求不是一個 multipart request, 原因是在feign中,發送 multipartfile文件,應該使用【@RequestPart】而不是【@RequestParam】,且需要設置請求content-type為【multipart/form-data】,所以正確寫法如下
在引入配置好Feign前提下
1.創建 FeignMultipartSupportConfig.class 配置文件
1 @Configuration 2 public class FeignMultipartSupportConfig { 3 4 @Bean 5 @Primary 6 @Scope("prototype") 7 public Encoder multipartFormEncoder() { 8 return new SpringFormEncoder(); 9 } 10 11 @Bean 12 public feign.Logger.Level multipartLoggerLevel() { 13 return feign.Logger.Level.FULL; 14 } 15 16 }
2.編寫 FeignClient
MultipartFile 類型參數使用 @RequestPart注解,字符串參數使用注解 @RequestParam
定義 consumes = MediaType.MULTIPART_FORM_DATA_VALUE
1 @FeignClient(value = "maven模塊的名字", fallback = FeignClientFallback.class,configuration = {FeignMultipartSupportConfig.class}) 2 //@FeignClient 3 public interface FeignClientService { 5 @PostMapping(value ="/oss/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 6 @ResponseBody 7 JSONObject upload(@RequestPart("file") MultipartFile file,@RequestParam("path") String path);
3.搞定