让feign支持文件传输

公司用的spring cloud项目,需要用到feign上传文件到另一个服务。

首先,默认feign是不支持文件传输的,需要给feign增加插件.(spring boot版本:2.0.5.RELEASE)

1. 首先给feign加入支持文件传输的插件maven支持:

	    <dependency>
	      <groupId>io.github.openfeign.form</groupId>
	      <artifactId>feign-form</artifactId>
	      <version>3.3.0</version>
		    </dependency>
	    <dependency>
	      <groupId>io.github.openfeign.form</groupId>
	      <artifactId>feign-form-spring</artifactId>
	      <version>3.3.0</version>
	    </dependency>
	    <dependency>
	      <groupId>commons-fileupload</groupId>
	      <artifactId>commons-fileupload</artifactId>
	      <version>1.3.3</version>
	    </dependency>

2. 为feign接口所在java文件指定配置文件类FeignConfig,在其中配置表单的参数Encoder实例(不配置encoder会使用feign默认的encoder,具体哪个类待以后研究,这也是feign不支持文件传输的根本原因!)

@Configuration
public class FeignConfig {


    @Bean
    public feign.codec.Encoder  feignFormEncoder() {
      return new SpringFormEncoder();
    }
}

3.为对外接口声明类指定刚才新建的config类.

同时在文件传输接口上指定两个header:@Headers(value={"Content-Type: multipart/form-data","accept: multipart/form-data"}),指明请求是文件流传输

4.接口形参上增加@RequestPart注解,标记参数类型为文件

@FeignClient(value = "user",configuration = FeignConfig.class)
public interface WeiboFeignService {
	
	
	@Headers(value={"Content-Type: multipart/form-data","accept: application/json;charset=UTF-8"})
	@RequestMapping(value = "/api/user/upload_head", consumes = MediaType.MULTIPART_FORM_DATA_VALUE,method = RequestMethod.POST)
	public String uploadPic(@RequestPart("image")MultipartFile image,@RequestParam("weiboUid")String weiboUid);
	

}

好了,去试试看能不能用吧

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值