首页 > 其他分享 >Feign使用MultipartFile

Feign使用MultipartFile

时间:2023-04-27 23:33:57浏览次数:50  
标签:Feign name uploadFile RequestPart file 使用 MultipartFile public

Feign的方法参数使用MultipartFile

Feign的方法参数使用MultipartFile,不能直接用,需要做一些配置。

依赖包:

<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form</artifactId>
    <version>3.8.0</version>
</dependency>
<dependency>
    <groupId>io.github.openfeign.form</groupId>
    <artifactId>feign-form-spring</artifactId>
    <version>3.8.0</version>
</dependency>

或者是直接用 spring-cloud-starter-openfeign。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

服务提供者

MultipartFile 使用 @RequestPart 修饰。

还需要添加一个消费者类型:consumes = MediaType.MULTIPART_FORM_DATA_VALUE

@RestController
@RequestMapping("/xx")
public class FileController {

    @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public Response uploadFile(@RequestPart("file") MultipartFile multipartFile, @RequestParam("name") String name) {
       
        //....
    }
}

配置Feign的Encoder

@Configuration
public class FeignMultipartConfig {

    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    @Primary
    @Scope("prototype")
    public Encoder feignEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
}

FeignClient

FeignClient 指定 configuration = FeignMultipartConfig.class

consumes = MediaType.MULTIPART_FORM_DATA_VALUE

如下所示。

@FeignClient(name = "xx",configuration = FeignMultipartConfig.class)
@RequestMapping("/xx")
public interface FeignService {

    @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    Response uploadFile(@RequestPart("file") MultipartFile multipartFile, @RequestParam("name") String name);

}

服务消费者

MultipartFile用 @RequestPart 修饰即可。

@RestController
@Slf4j
public class FeignController {

    @Autowired
    private FeignService feignService;

    @RequestMapping(value = "/uploadFile")
    public String fileUpload(@RequestPart("file") MultipartFile file, @RequestParam("name") String name ) {

        log.info("文件上传---fileName---{}",file.getOriginalFilename());
        return feignService.uploadFile(file,name);
    }

}

参考资料:

https://www.cnblogs.com/geekdc/p/13685039.html

标签:Feign,name,uploadFile,RequestPart,file,使用,MultipartFile,public
From: https://www.cnblogs.com/expiator/p/17360534.html

相关文章

  • 私有继承派生类使用基类的成员函数
    按要求完成下面的程序:1、定义一个Animal类,成员包括:(1)整数类型的私有数据成员m_nWeightBase,表示Animal的体重;(2)整数类型的保护数据成员m_nAgeBase,表示Animal的年龄;(3)公有函数成员set_weight,用指定形参初始化数据成员m_nWeightBase;(4)公有成员函数get_weight,返回数据成员m_nWeightBase的......
  • Spring Boot Profile使用
    SpringBoot使用@Profile注解可以实现不同环境下配置参数的切换,任何@Component或@Configuration注解的类都可以使用@Profile注解。例如:@Configuration@Profile("production")publicclassProductionConfiguration{//...} 通常,一个项目中可能会有多个profile场景,例如下......
  • swagger2的常用注解,传递参数的注意使用方法
    背景介绍:刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。在集成了swagger2后,找了半天的原因,发现使用@ApiImplicitParam这个注解可以解决这个问题。对应下面的参数。所以我们可以使......
  • 使用CGLIB生成代理
    知识点【使用前提条件:【/**如果这个代理的类没有实现接口就不能使用JDK中的动态代理*这时需要使用第三方的.jarCGLIB实现代理**/】publicclassCGLIBProxyimplementsMethodInterceptor{privateObjecttar......
  • 使用Spring进行面向切面(AOP)编程
    基础知识:【要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework......
  • commitlint.config的配置和中文文档(附使用示例)
     https://blog.csdn.net/qq_38290251/article/details/111646491https://blog.csdn.net/qq_21197033/article/details/128609033 TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimpl......
  • c/c++程序中获取当前可执行文件所在的目录路径,使用跨平台的program_location
    c/c++程序中获取当前可执行文件所在的目录路径对于大型工程中,可执行文件中通过c/c++代码获取到当前路径,可以很大方便于工程后续的部署与运维工作。比如说根据当前的可执行文件路径获取到配置文件的路径,然后加载读取配置文件。有了这个能力就不用再在操作系统中配置环境变量来指......
  • Logback日志输出配置和使用-要点攻略
    Logback是由log4j创始人设计的另一个开源日志组件,比log4j功能更强大,效率更高。官方网站:http://logback.qos.ch/documentation.html。本文较为详细地讲述logback的日志输出使用原理、如何配置,并结合具体的代码,给出程序调用的方法。为了讲清原理,本文从log4j的日志级别开讲,然后讲述......
  • Jest快速使用指南
    1.引言写了几个函数,怎么知道写得对不对呢?可以通过测试函数,当然开发中测试的意义不只是这个Jest是常用的JavaScript测试框架官网为:Jest·......
  • 每日总结2023-04-27——关于全局变量的基础使用
    今天完成了对全局变量的使用packagecom.example.math;/**全局变量**/importandroid.app.Application;publicclassCustomApplicationextendsApplication{privatestaticfinalStringVALUE="111";privateStringvalue;@Overridepublic......