Feign实现微服务间文件上传

2022-07-27 10:18:50

Feign实现微服务间文件上传

相关依赖

<!--openFeign--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>2.1.3.RELEASE</version></dependency>

服务提供者

说明:

  • 服务提供者是系统中提供操作oss文件服务器的服务
@PostMapping(value="/feignUpload")public StringfeignUpload(@RequestPart MultipartFile file){if(file.isEmpty()){thrownewRRException("上传文件不能为空");}//上传文件
		String suffix= file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
		String url= null;try{
			url= OSSFactory.build().uploadSuffix(file.getBytes(), suffix);}catch(IOException e){
			e.printStackTrace();
			log.error("文件上传失败===>{}", file);}

		log.info("oss 文件上传成功=====>{}"+ url);return url;}

服务消费者

说明:

  • 这里采用的是首先调用网关通过Spring Cloud Gateway网关调用某个服务,这里某个服务指的就是服务消费者。
  • 然后服务提供者这里需要将文件上传到oss服务器中,所以这边系统调用oss服务(也就是上文的服务提供者)实现文件上传到oss服务器中。

@RequestPart:主要依赖于该注解,标识multipart/form-data表单提交。

  • 支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的
  • @RequestParam也同样支持multipart/form-data请求。
  • 他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
  • @RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)
定义openFeign客户端接口
@FeignClient(value="zlhouse-sys")publicinterfaceSysOssService{/**
	 * 表单类型文件对象上传到oss远程接口
	 * @param file  上传的文件
	 */@PostMapping(value="/app/feignUpload", consumes= MediaType.MULTIPART_FORM_DATA_VALUE)
	StringfeignUpload(@RequestPart("file") MultipartFile file);}
消费者调用控制器
@RestController@RequestMapping("/contract")@Slf4jpublicclassContractController{@Resourceprivate SysOssService sysOssService;@PostMapping("/upload")public StringtestFileUpload(@RequestPart("file") MultipartFile file){
		System.out.println("开始文件上传"+ file);
		String s= sysOssService.feignUpload(file);
		System.out.println("执行完毕"+ s);return sysOssService.feignUpload(file);}}

执行结果

在这里插入图片描述

关于微服务通过openfeign实现服务之间相互调用实现文件上传就给大家介绍到这里,如有不足或其他问题欢迎在下方指出,感谢阅读本文章。

  • 作者:JayPDD
  • 原文链接:https://blog.csdn.net/weixin_45051743/article/details/108208332
    更新时间:2022-07-27 10:18:50