• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

FeignSpring Cloud Feign Client 调用文件上传接口实现MultipartFile上传文件功能

武飞扬头像
ladymorgana
帮助1

场景:

        跨服务调用文件上传接口

        技术栈Feign nacos

报错:

                feign.codec.EncodeException: Error converting request body

解决方案:

step1:添加pom依赖

  1.  
    <!--这里我使用nacos注册中心,如果没有使用可以不用nacos-discovery-->
  2.  
    <dependency>
  3.  
    <groupId>com.alibaba.cloud</groupId>
  4.  
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  5.  
    </dependency>
  6.  
    <dependency>
  7.  
    <groupId>org.springframework.cloud</groupId>
  8.  
    <artifactId>spring-cloud-starter-openfeign</artifactId>
  9.  
    </dependency>

step2:添加配置类  FeignMultipartSupportConfig.java

  1.  
     
  2.  
    import feign.codec.Encoder;
  3.  
    import feign.form.spring.SpringFormEncoder;
  4.  
    import org.springframework.beans.BeansException;
  5.  
    import org.springframework.beans.factory.ObjectFactory;
  6.  
    import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
  7.  
    import org.springframework.cloud.openfeign.support.SpringEncoder;
  8.  
    import org.springframework.context.annotation.*;
  9.  
    import org.springframework.web.client.RestTemplate;
  10.  
     
  11.  
     
  12.  
    @Configuration
  13.  
    public class FeignMultipartSupportConfig {
  14.  
     
  15.  
    @Bean
  16.  
    @Primary
  17.  
    @Scope("prototype")
  18.  
    public Encoder multipartFormEncoder() {
  19.  
    return new SpringFormEncoder(new SpringEncoder(new ObjectFactory<HttpMessageConverters>() {
  20.  
    @Override
  21.  
    public HttpMessageConverters getObject() throws BeansException {
  22.  
    return new HttpMessageConverters(new RestTemplate().getMessageConverters());
  23.  
    }
  24.  
    }));
  25.  
    }
  26.  
     
  27.  
    @Bean
  28.  
    public feign.Logger.Level multipartLoggerLevel() {
  29.  
    return feign.Logger.Level.FULL;
  30.  
     
  31.  
    }
  32.  
    }
学新通

step3:编写Feign Client

  1.  
    import com.hzd.config.FeignMultipartSupportConfig;
  2.  
    import com.privatecloud.core.dto.JsonResult;
  3.  
    import org.springframework.cloud.openfeign.FeignClient;
  4.  
    import org.springframework.http.MediaType;
  5.  
    import org.springframework.web.bind.annotation.PostMapping;
  6.  
    import org.springframework.web.bind.annotation.RequestParam;
  7.  
    import org.springframework.web.bind.annotation.RequestPart;
  8.  
    import org.springframework.web.multipart.MultipartFile;
  9.  
     
  10.  
    /**
  11.  
    * 注意点
  12.  
    * 1:configuration = FeignMultipartSupportConfig.class
  13.  
    * 2.consumes = MediaType.MULTIPART_FORM_DATA_VALUE
  14.  
    */
  15.  
     
  16.  
    @FeignClient(value = "baseserver",configuration = FeignMultipartSupportConfig.class)
  17.  
    public interface BaseserverClient {
  18.  
     
  19.  
    /**
  20.  
    * 文件上传至阿里云
  21.  
    * @param file
  22.  
    * @param imei
  23.  
    * @param sysDictItemId
  24.  
    * @return
  25.  
    */
  26.  
    @PostMapping(value = "/file/image/uplode", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
  27.  
    JsonResult<String> upload(@RequestPart MultipartFile file);
  28.  
    }
学新通

step4:调用

  1.  
     
  2.  
    @Api(tags = "植物智能管理", value = "植物库")
  3.  
    @RestController
  4.  
    @RequestMapping("/plant/AI")
  5.  
    @Slf4j
  6.  
    public class PlantAIController {
  7.  
     
  8.  
     
  9.  
    @Autowired
  10.  
    private BaseserverClient baseserverClient;
  11.  
     
  12.  
    @PostMapping("/recognition")
  13.  
    public void test(@RequestPart(value = "file", required = false) MultipartFile file){
  14.  
     
  15.  
    baseserverClient.upload(file);
  16.  
     
  17.  
    }
  18.  
     
  19.  
    }
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgaaefk
系列文章
更多 icon
同类精品
更多 icon
继续加载