zoukankan      html  css  js  c++  java
  • springCloud 传文件

    依赖
    <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>
    服务消费者Service接口
    @FeignClient(value = "xqwl-street-provider", configuration = ImsRhinfoZyxqCarService.MultipartSupportConfig.class)
    @Service
    public interface ImsRhinfoZyxqCarService {
        @PostMapping(value = "/ImsRhinfoZyxqSanitationController/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        R SanitationUpload(@RequestPart(value = "file")MultipartFile file);
    
        @Configuration
        class MultipartSupportConfig {
            @Bean
            public Encoder feignFormEncoder(ObjectFactory<HttpMessageConverters> messageConverters) {
                return new FeignSpringFormEncoder(new SpringEncoder(messageConverters));
            }
        }
    }

    传文件配置
    import feign.RequestTemplate;
    import feign.codec.EncodeException;
    import feign.codec.Encoder;
    import feign.form.ContentType;
    import feign.form.FormEncoder;
    import feign.form.MultipartFormContentProcessor;
    import feign.form.spring.SpringManyMultipartFilesWriter;
    import feign.form.spring.SpringSingleMultipartFileWriter;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.lang.reflect.Type;
    import java.util.Collections;
    import java.util.Map;
    public class FeignSpringFormEncoder extends FormEncoder {
        public FeignSpringFormEncoder() {
            this(new Default());
        }
        public FeignSpringFormEncoder(Encoder delegate) {
            super(delegate);
            MultipartFormContentProcessor processor = (MultipartFormContentProcessor)this.getContentProcessor(ContentType.MULTIPART);
            processor.addFirstWriter(new SpringSingleMultipartFileWriter());
            processor.addFirstWriter(new SpringManyMultipartFilesWriter());
        }
        public void encode(Object object, Type bodyType, RequestTemplate template) throws EncodeException {
            if (bodyType.equals(MultipartFile.class)) {
                MultipartFile file = (MultipartFile) object;
                Map<String, Object> data = Collections.singletonMap(file.getName(), object);
                super.encode(data, MAP_STRING_WILDCARD, template);
                return;
            } else if (bodyType.equals(MultipartFile[].class)) {
                MultipartFile[] file = (MultipartFile[]) object;
                if(file != null) {
                    Map<String, Object> data = Collections.singletonMap(file.length==0?"":file[0].getName(), object);
                    super.encode(data, MAP_STRING_WILDCARD, template);
                    return;
                }
            }
            super.encode(object, bodyType, template);
        }
    }
    服务提供者接口
    @PostMapping(value="upload",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public R upload(MultipartFile file){
      return   sanitationService.importExcel(file);
    }
  • 相关阅读:
    主成分分析(PCA)原理详解_转载
    用eclipse怎么打war包?
    dsLinq.Count() 引发了“System.NullReferenceException”类型的异常
    sql中实现split()功能
    关于SQL Server将一列的多行内容拼接成一行,合并显示在另外表中
    SEM和SEO的区别?
    最适合程序员转行的10大职业
    CPM、CPC、CPA、PFP、CPS、CPL、CPR等广告术语是什么意思
    什么是CPC,CPA,CVR,CTR,ROI
    SQL SERVER 修改数据库名称(包括 db.mdf 名称的修改)
  • 原文地址:https://www.cnblogs.com/-mzh/p/11882412.html
Copyright © 2011-2022 走看看