1.編寫目的
通過調用服務進行文件上傳,避免每個需要上傳文件的模塊都寫一遍上傳服務,造成代碼冗余。
2.主要內容
本文主要包含通過feign進行文件上傳模塊。
3.作用
使技術人員在開發過程中遇到問題時有地可查,有章可循。
4.如何通過feign進行跨服務傳遞MultipartFile文件
4.1添加依賴
<dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form</artifactId> <version>3.0.3</version> </dependency> <dependency> <groupId>io.github.openfeign.form</groupId> <artifactId>feign-form-spring</artifactId> <version>3.0.3</version> </dependency>
4.2添加配置文件
1 package com.ruiyi.twowayreferral.configurer; 2 3 import feign.codec.Encoder; 4 import feign.form.spring.SpringFormEncoder; 5 import org.springframework.beans.factory.ObjectFactory; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.boot.autoconfigure.http.HttpMessageConverters; 8 import org.springframework.cloud.openfeign.support.SpringEncoder; 9 import org.springframework.context.annotation.Bean; 10 import org.springframework.context.annotation.Configuration; 11 12 @Configuration 13 public class MultipartSupportConfig { 14 15 @Autowired 16 private ObjectFactory<HttpMessageConverters> messageConverters; 17 18 @Bean 19 public Encoder feignFormEncoder() { 20 return new SpringFormEncoder(new SpringEncoder(messageConverters)); 21 } 22 }
4.3代碼示例
1 @FeignClient(value = "controller-center") 2 public interface CallFrignService { 3 4 /** 5 * @Create 文件上傳 wanggx_ruiyi 2019.11.15 6 * @param uploadPath 文件上傳地址 7 * @param file 上傳的文件 8 * @return 9 */ 10 @PostMapping(value = "/api/v1/common/file/fileUpload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) 11 String fileUpload(@RequestParam(value = "uploadPath", required = true) String uploadPath,@RequestPart(value = "file", required = true) MultipartFile file); 12 }