通过Feign上传文件(踩坑)

引入依赖:

        
            org.springframework.cloud
            spring-cloud-starter-openfeign
        

服务提供者: 

@RestController
@RequestMapping("/file")
public interface FileUploadService {

    @RequestMapping(value = "/uploadFile", method = RequestMethod.POST, consumes = MULTIPART_FORM_DATA_VALUE)
    CommonResult uploadFile(@RequestPart("file") MultipartFile file,
                                    @RequestParam(value = "containerName", required = false) String containerName

}

具体实现不是重点……根据你的实际情况去完成……

服务调用者:

@RestController
@FeignClient(value = "XXXXXXXX", configuration = FileUploadServiceFeign.ClientConfiguration.class)
@RequestMapping("/file")
public interface FileUploadServiceFeign extends FileUploadService {
    

    /**
     * 配置类
     */
    class ClientConfiguration {
        /**
         * 此处注入的是: ObjectFactory
         */
        @Autowired
        private ObjectFactory messageConverters;

        @Bean
        public Encoder feignEncoder() {
            return new SpringFormEncoder(new SpringEncoder(messageConverters));
        }
    }
}

这样就行了……

需要注意的是:

在服务调用者那层的MultipartFile的value要跟服务提供者的@RequestPart中的value值一样。不然它会抛出400异常!!!

通过Feign上传文件(踩坑)_第1张图片

成功案例:

通过Feign上传文件(踩坑)_第2张图片

通过Feign上传文件(踩坑)_第3张图片

你可能感兴趣的:(Spring,Cloud)