Spring Cloud Feign的文件上传实现的示例代码

 更新时间:2018年03月22日 09:32:32   作者:翟永超   我要评论

这篇文章主要介绍了Spring Cloud Feign的文件上传实现的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

在Spring Cloud封装的Feign中并不直接支持传文件,但可以通过引入Feign的扩展包来实现,本来就来具体说说如何实现。

服务提供方(接收文件)

服务提供方的实现比较简单,就按Spring MVC的正常实现方式即可,比如:

@RestController
public class UploadController {

  @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  public String handleFileUpload(@RequestPart(value = "file") MultipartFile file) {
    return file.getName();
  }
  
}

服务消费方(发送文件)

在服务消费方由于会使用Feign客户端,所以在这里需要在引入feign对表单提交的依赖,具体如下:

<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>
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
</dependency>

定义FeignClient,假设服务提供方的服务名为 upload-server

@FeignClient(value = "upload-server", configuration = TestServiceClient.MultipartSupportConfig.class)
public interface UploadService { 
  @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  String handleFileUpload(@RequestPart(value = "file") MultipartFile file);
 
  @Configuration
  class MultipartSupportConfig {
    @Bean
    public Encoder feignFormEncoder() {
      return new SpringFormEncoder();
    }
  } 
}

在启动了服务提供方之后,尝试在服务消费方编写测试用例来通过上面定义的Feign客户端来传文件,比如:

@Test
@SneakyThrows
public void testHandleFileUpload() { 
  File file = new File("files/aaa.txt");
  DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory().createItem("file",
      MediaType.TEXT_PLAIN_VALUE, true, file.getName()); 
  try (InputStream input = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()) {
    IOUtils.copy(input, os);
  } catch (Exception e) {
    throw new IllegalArgumentException("Invalid file: " + e, e);
  } 
  MultipartFile multi = new CommonsMultipartFile(fileItem); 
  log.info(testServiceClient.handleFileUpload(multi));
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Spring boot实现一个简单的ioc(2)

    Spring boot实现一个简单的ioc(2)

    这篇文章主要为大家详细介绍了Spring boot实现一个简单ioc的第二篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Spring Cloud入门教程之Zuul实现API网关与请求过滤

    Spring Cloud入门教程之Zuul实现API网关与请求过滤

    这篇文章主要给大家介绍了关于Spring Cloud入门教程之Zuul实现API网关与请求过滤的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-05-05
  • hibernate关于session的关闭实例解析

    hibernate关于session的关闭实例解析

    这篇文章主要介绍了hibernate关于session的关闭实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java实现随机验证码具体代码

    Java实现随机验证码具体代码

    这篇文章主要为大家详细介绍了Java实现随机验证码具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • java利用CountDownLatch实现并行计算

    java利用CountDownLatch实现并行计算

    这篇文章主要介绍了java利用CountDownLatch实现并行计算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • java 文件和byte互转的实例

    java 文件和byte互转的实例

    下面小编就为大家分享一篇java 文件和byte互转的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • Java异常处理的五个关键字

    Java异常处理的五个关键字

    本篇文章给大家详细讲述了关于Java异常处理的相关知识点,并列举了5个重要关键字,一起啊参考学下。
    2018-03-03
  • spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法

    spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的

    这篇文章主要介绍了spring cloud feign不支持@RequestBody+ RequestMethod.GET报错的解决方法,需要的朋友可以参考下
    2018-01-01
  • Struts 2 实现Action的几种方式

    Struts 2 实现Action的几种方式

    本篇文章主要介绍了Struts 2 实现Action的几种方式,Struts 2框架下实现Action类有三种方式,有兴趣的可以了解一下
    2017-10-10
  • java集合 collection-list-LinkedList详解

    java集合 collection-list-LinkedList详解

    下面小编就为大家带来一篇java集合 collection-list-LinkedList详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论