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);
    }
  • 相关阅读:
    分布式系列
    mybatis-generator自动生成代码工具
    mybatis的jdbcType和javaType、oracle,MySQL的对应类型
    spring的@Transactional注解详细用法
    Unity火爆插件Behavior Designer行为树插件学习
    Unity内存优化之视频讲解
    Unity 2018 Game Development in 24 Hours Sams Teach Yourself 3rd Edition
    8 Ball Pool
    Unity设计模式+Java设计模式,讲解+案例+PPT,一次性学会设计模式,拥抱高薪!
    Unity接入微信登录 微信分享 微信支付 支付宝SDK
  • 原文地址:https://www.cnblogs.com/-mzh/p/11882412.html
Copyright © 2011-2022 走看看