欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springCloud微服务之间通过feign调用方式上传文件找不到文件解决方案

程序员文章站 2022-03-21 09:13:27
通过我们使用spring系列的框架上传文件,都会利用MultipartFile文件流进行文件的上传。但是我在最近的项目中遇到一个问题,我们的项目是基于springboot框架的springcloud微服务搭建的,后端服务技术希望用feign来做对外统一开放的接口服务。在服务之间的调用时,发现MultipartFile文件流上传文件会报错,在网上找了很久,找到了解决方案:一、编写配置类编写一个配置类,也就是把multipart/form-data格式的文件流编码为spring框架能够解析的格式/**...

通过我们使用spring系列的框架上传文件,都会利用MultipartFile文件流进行文件的上传。但是我在最近的项目中遇到一个问题,我们的项目是基于springboot框架的springcloud微服务搭建的,后端服务技术希望用feign来做对外统一开放的接口服务。在服务之间的调用时,发现MultipartFile文件流上传文件会报错,在网上找了很久,找到了解决方案:

一、编写配置类
编写一个配置类,也就是把multipart/form-data格式的文件流编码为spring框架能够解析的格式

/**
 * spring能够解析multipart/form-data格式的文件流   配置类
 *
 * @author wu
 * @version 1.0
 * @date 2020/12/9/009
 */

@Configuration
public class MultipartSupportConfig {

    @Autowired
    private ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    public Encoder feignFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
}

在服务调用方加注解类


import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

/**
 * @author wu
 * @version 1.0
 * @date 2020/12/1/001
 */
@FeignClient(value = "xxxxx", configuration = MultipartSupportConfig.class)
public interface FileService {
    /**
     * 文件上传
     *
     * @param file
     * @param fileType
     * @return
     */
    @PostMapping(value = "/upload" ,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    ResponseEntity upload(@RequestPart(value = "file") MultipartFile file,
                          @RequestParam(value = "fileType") String fileType);

注意:文件流要用RequestPart注解传参,其余参数用RequestParam注解传参

本文地址:https://blog.csdn.net/MAX_xiaowu/article/details/110919382