由上可知,报错提示当前请求不是一个 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.搞定