精华内容
下载资源
问答
  • 1.在yml中配置文件上传大小限制 spring.http.multipart.maxFileSize: 200Mb spring....2.controller中添加上传文件接口 @PostMapping(value = "/uploadImg") // @HystrixCommand(fallbackMeth

    1.在yml中配置文件上传大小限制

     

    spring.http.multipart.maxFileSize: 200Mb
    spring.http.multipart.maxRequestSize: 200Mb

    2.controller中添加上传文件接口

     

     

    @PostMapping(value = "/uploadImg")
    // @HystrixCommand(fallbackMethod = "abc")
       public HsResult uploadImg(@RequestParam("picFile") MultipartFile picFile) {
          return this.mechanismInfoService.uploadImg(picFile);//具体上传逻辑可以自己实现
       }

     

     

    上传成功。

    ---------------------------------------------------------------------------------------

    《feign调用上传接口方案》

    1.同样配置yml

     

    spring.http.multipart.maxFileSize: 200Mb
    spring.http.multipart.maxRequestSize: 200Mb

    2.编写feignservice

     

    @Autowired
    private FeignService feignService;
    @PostMapping(value = "/up")
    public HsResult up(@RequestParam("picFile") MultipartFile picFile) {
        return this.feignService.uploadImg(picFile);
    }

     

     

    @Component
    @FeignClient(value = "map-service")
    public interface FeignService {
        @RequestMapping(value = "/mechanism/uploadImg",method = RequestMethod.POST,produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public HsResult uploadImg(@RequestPart("picFile") MultipartFile picFile);
    

     

    如果报超时错误,需要调大hystrix和ribbon的超时时间!

     

    MARK:

    最近在关注一个手机挖矿项目,叫Bee蜜蜂币。

    APP 下载链接: https://bee.com/sc/

    推荐码:lei911gang

    手机免费挖矿,感兴趣的可以一起加入。

     

    展开全文
  • Feign上传文件

    千次阅读 2018-04-18 09:43:05
    今天给大家介绍下在Feign中如何调用文件上传接口,进行文件上传操作。 这边文章讲的Feign不是Spring Cloud Feign,是原始Feign的使用。 在一些比较老的,不是Spring Cloud的项目中,我们也可以用Feign来进行接口的...

    今天给大家介绍下在Feign中如何调用文件上传接口,进行文件上传操作。

    这边文章讲的Feign不是Spring Cloud Feign,是原始Feign的使用。

    在一些比较老的,不是Spring Cloud的项目中,我们也可以用Feign来进行接口的调用。

    关于Feign的使用可以参考我的这篇文章:http://cxytiandi.com/blog/detail/12189

    使用Feign来上传文件,首先你得有一个上传文件的接口,我们假设上传地址如下:

    POST http://localhost:8080/file/upload
    

    参数的话就一个file,一个二进制文件。

    在项目中增加Feign的依赖,除了核心模块还有jackson,最重要的就是form模块的依赖,否则无法上传文件。

    <dependency>
        <groupId>com.netflix.feign</groupId> 
        <artifactId>feign-core</artifactId>
        <version>8.18.0</version>
    </dependency>
    <dependency>
        <groupId>io.github.openfeign.form</groupId>
        <artifactId>feign-form</artifactId>
        <version>2.0.5</version>
    </dependency>
    <dependency>
        <groupId>com.netflix.feign</groupId>
        <artifactId>feign-jackson</artifactId>
        <version>8.18.0</version>
    </dependency>
    

    定义一个上传的接口:

    public interface FileUploadApi {
     
        @RequestLine("POST /file/upload")
        @Headers("Content-Type: multipart/form-data")
        Response uploadFile(@Param("file") File file);
     
    }
    

    @Param(“file”)byte[] file 也可以

    编写上传逻辑:

    public class UploadService {
        private static final String HTTP_FILE_UPLOAD_URL = "http://localhost:8080/file/upload";
      
        public boolean uploadFile(File file) {
     
            FileUploadApi fileUploadApi = Feign.builder()
                    .encoder(new FormEncoder(new JacksonEncoder()))
                    .target(FileUploadApi .class, HTTP_FILE_UPLOAD_URL);
     
            Response response = fileUploadApi .uploadFile(file);
            return response.status() == 200;
        }
     
    }
    

    测试代码:

     @Test
     public void testUploadFile() {
         UploadService uploadService = new UploadService();
         File file = new File("E:\\yinjihuan.txt");
         assertTrue(uploadService.uploadFile(file));
     }
    

    更多技术分享请关注微信公众号:猿天地

    欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course)

    PS:目前星球中正在星主的带领下组队学习Spring Cloud,等你哦!

    微信扫码加入猿天地知识星球

    猿天地

    展开全文
  • 使用feign上传文件

    2018-11-09 10:47:29
    使用 feign 上传文件 在这里我使用了consul作为服务注册中心,使用feign上传文件。 由于发现feignclient直接调用上传接口时不行的,所以需要加入下面的依赖。 首先在pom中加入 &lt;dependency&gt; &...

    使用 feign 上传文件

    在这里我使用了consul作为服务注册中心,使用feign来上传文件。

    由于发现feignclient直接调用上传接口时不行的,所以需要加入下面的依赖。

    首先在pom中加入

    
       <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-openfeign</artifactId>
       </dependency>
       <dependency>
           <groupId>io.github.openfeign.form</groupId>
           <artifactId>feign-form-spring</artifactId>
           <version>3.2.2</version>
       </dependency>
       <dependency>
           <groupId>io.github.openfeign.form</groupId>
           <artifactId>feign-form</artifactId>
           <version>3.2.2</version>
       </dependency>
       
    

    然后在启动类上加上@EnableFeignClients

    
    @SpringBootApplication
    @EnableFeignClients
    public class Application {
        public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
        }
    }
    
    

    之后新建一个接口,加入@FeignClient,name为服务名,fallback为hystrix熔断,configuration为配置。

    
    @FeignClient(name = "servicename", fallback = UploadFallback.class, configuration = FeignMultipartSupportConfig.class)
    public interface UploadClient {
    
    }
    

    这是还需要加入Encoder

    @Configuration
    public class FeignMultipartSupportConfig {
        @Bean
        @Primary
        @Scope("prototype")
        public Encoder multipartFormEncoder() {
            return new SpringFormEncoder(new SpringEncoder(new ObjectFactory<HttpMessageConverters>() {
                @Override
                public HttpMessageConverters getObject() throws BeansException {
                    return new HttpMessageConverters(new RestTemplate().getMessageConverters());
                }
            }));
        }
    
        @Bean
        Logger.Level feignLoggerLevel() {
            return Logger.Level.FULL;
        }
    }
    
    

    在上传接口中,一定是@RequestPart,而不是@RequestParam

    
        @PostMapping(value = "file/upload/part",produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        Object upload(@RequestPart("file") MultipartFile file);
    
    

    最后如果要加入熔断机制的话,只需要继承client接口,在方法中自定义即可。

    有一点需要注意,openfeign底层使用的是ribbon,所以需要对ribbon设置超时时间。因为feign它的默认超时时间是1s,所以还未上传成功就会遭到熔断,所以我们需要在yml文件中加入如下代码。

    
    feign:
        hystrix:
            enabled: true
    ribbon:
        ReadTimeout: 10000
        ConnectTimeout: 10000
    hystrix:
        command:
            default:
                execution:
                    isolation:
                        thread:
                            timeoutInMilliseconds: 20000
    
    
    展开全文
  • feign上传文件

    2021-01-28 23:09:50
    feign上传文件 注意: 请求方式必须是POST consumes必须指定为Media=MediaType.MULTIPART_FORM_DATA_VALUE produces 须指定为 MediaType.APPLICATION_JSON_UTF8_VALUE 上传参数的名字最好保持一致 引入依赖 <...

    feign上传文件

    注意:

    • 请求方式必须是POST
    • consumes必须指定为Media=MediaType.MULTIPART_FORM_DATA_VALUE
    • produces 须指定为 MediaType.APPLICATION_JSON_UTF8_VALUE
    • 上传参数的名字最好保持一致
    • 在这里插入图片描述

    引入依赖

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

    在UserController中接收参数

        @PostMapping(value = "/user/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public String uploadPic(MultipartFile file){
            //委托FeignClient进行远程调用
            return userService.uploadPic(file);
        }
    

    FeignClient

    由userController调用Feign客户端

    编辑配置类MultipartConfig

    public class MultipartConfig {
        @Bean
        @Scope("prototype")
        public Encoder encoder(){
            return new SpringFormEncoder();
        }
    }
    
    @FeignClient(name = "user-provider",configuration = MultipartConfig.class)
    public interface UserService {
        @PostMapping(value = "/user/upload",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        String uploadPic(@RequestPart("file") MultipartFile file);
    }
    

    user-provider

    由Feign远程调用user-provider的controller,代码如下

      @PostMapping(value = "/user/upload",
            produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
            consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public String uploadPic(MultipartFile file,HttpServletRequest request){
            return userService.uploadPic(file,request);
        }
    

    具体实现文件在本地存储

     @PostMapping(value = "/user/upload",produces = MediaType.APPLICATION_JSON_UTF8_VALUE,consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
        public String uploadPic(MultipartFile file){
            //获取项目在此电脑上的真实路径
            String fileTrue = System.getProperty("user.dir");
            String videoName = file.getOriginalFilename();//获取文件名称
            fileTrue += "\\file\\";
    
    
                try {
                    byte[] bytes = file.getBytes();
                    Path path = Paths.get(fileTrue + file.getOriginalFilename());
                    //如果没有files文件夹,则创建
                    if (!Files.isWritable(path)) {
                        Files.createDirectories(Paths.get(fileTrue));
                    }
                    //短视频文件写入指定路径
                    Files.write(path, bytes);
                    String pathVideo = String.valueOf(path);
                    //编写文件操作逻辑,现在只是将文件名返回
                    //return file.getOriginalFilename();
                    return pathVideo;//上传文件存储路径
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            return "上传失败";
        }
    
    展开全文
  • spring cloud feign 上传文件和下载文件 原文地址 什么是Feign Feign is a declarative web service client. It makes writing web service clients easier. To use Feign create an interface and annotate it. It...
  • 本篇文章主要介绍了使用Spring Cloud Feign上传文件的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Feign 上传文件的常见问题

    千次阅读 2019-04-10 23:14:12
    欢迎访问陈同学博客原文 ...本文将介绍利用 Feign 上传文件的几个常见问题。 如何上传一个/组文件 如何上传多种文件 MultipartFile 参数不能为空问题 未提供 MultipartFile 参数接口报 no multipart b...
  • 早期的Spring Cloud中,Feign本身是没有上传文件的能力的(1年之前),要想实现这一点,需要自己去编写Encoder去实现上传。现在我们幸福了很多。因为Feign官方提供了子项目feign-form,其中实现了上传所需的Encoder...
  • feign client @FeignClient(value = "front-service", path = "/account", fallback = AccountClientFallBack.class,configuration = FeignMultipartSupportConfig.class) public interface OpenAccountFeignClien...
  • 通过Feign 扩展 可以实现Feign 单个文件和多个文件上传,示例代码中演示了单个文件上传,多个文件上参考博客自己实现即可。文章地址:https://blog.csdn.net/AaronSimon/article/details/82710938
  • 2019年12月11日 panlobal编写 第1版 有任何意见和建议,请反馈给我;我会继续优化该文章。成果展示系统环境本篇文章中环境:spring boot 1.5.4.RELEASE 、...添加依赖早期的Spring Cloud中,Feign本身是没有上传...
  • 2019年12月11日 panlobal编写 第1版 有任何意见和建议,请反馈给我;我会继续优化该文章。 搭建成果展示 系统环境 本篇文章中环境:spring boot 1.5.4.RELEASE 、spring cloud ...早期的Spring Cloud中,Feign...
  • Feign文件上传

    2018-10-28 00:23:42
    Feign文件上传 1. 在自己的文件上传服务中引入feign 提供的依赖 &lt;dependency&gt; &lt;groupId&gt;io.github.openfeign.form&lt;/groupId&gt; &lt;artifactId&gt;feign-form&...
  • 单个的 MultipartFile file 我们feign是可以正常接收到,但是如果传MultipartFile [] file的时候,这时执行上传多个文件的时候就会报: Caused by: feign.codec.EncodeException: Could not write request: no ...
  • spring cloud feign接口上传文件

    千次阅读 2019-01-28 18:48:54
    最近在使用Spring Cloud封装的Feign,自己在项目中暴露的feign接口中有一个接口是上传文件的,使用了常规的@RequsetParam去获取,然后报错:  The current request is not a multipart request 然后以为是自己...
  • feign批量上传文件

    2021-01-07 16:56:08
    import feign.codec.Encoder; import feign.form.FormEncoder; import feign.form.spring.SpringFormEncoder; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans....
  • Feign 无法直接传递文件参数,需要在client端引入几个依赖 1. 创建服务端 方式与普通的文件上传方法一致 @RestController @RequestMapping("/producer/upload") class UploadProducer { @PostMapping(value = '/...
  • } 上传Controller @PostMapping("/upload") @ResponseBody public ResponseEntity handleFileUpload(@RequestPart("file") MultipartFile file) { try { ResponseEntity map = fileClient.handleFileUpload(file);...
  • 文章目录SpringCloudFeign文件上传Feign文件上传POM依赖Fiegn接口端配置类Feign接口接口提供端接口消费端在代码中调用Feign文件上传,上面代码不需要改变消费方代码 SpringCloudFeign文件上传 Feign文件...
  • 上传文件配置增加如下依赖:io.github.openfeign.formfeign-form-spring<!--3.2.2 -->io.github.openfeign.formfeign-form3.2.2增加相关配置:@Configurationpublic class FeignSupportConfig {@Beanpublic ...
  • Feign 接口上传文件

    2019-06-26 17:55:00
    1)Encoder 配置注入容器 2) public class SpringFormEncoderExtension extends FormEncoder { ... * 使用默认的feign编码器 * * @author*/ public SpringFormEncoderExtension() { ...
  • 最近在使用Spring Cloud封装的Feign,自己在项目中暴露的feign接口中有一个接口是上传文件的,使用了常规的@RequsetParam去获取,然后报错: The current request is not a multipart request 然后以为是自己...
  • 通过Feign上传文件(踩坑) 通过 feign  调用文件服务提供者接口时,需传输 文件file ,服务调用者有时会报错误:feign.FeignException$BadRequest: status 400 reading   ![image.png]...
  • Spring Cloud Feign Client 上传文件

    千次阅读 2018-03-30 14:12:21
    今天在做上传文件功能时,直接使用FeignClient去远程调用注册中心上的上传文件接口,一直报错。解决方案:加入maven依赖&lt;dependency&gt; &lt;groupId&gt;io.github.openfeign.form&lt;/...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,898
精华内容 1,559
关键字:

feign上传大文件