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

Zuul【文件上传】

程序员文章站 2023-02-05 09:31:24
1、搭建一个eureka-server注册中心工程 该工程比较简洁,没有太多配置,不在描述,单节点,服务端口:8888 2、创建zuul-gateway网关工程 2.1、工程pom依赖 2.2、工程配置文件:zuul-gateway\src\main\resources\bootstrap.yml ......

1、搭建一个eureka-server注册中心工程

该工程比较简洁,没有太多配置,不在描述,单节点,服务端口:8888

2、创建zuul-gateway网关工程

2.1、工程pom依赖

<dependencies>
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-netflix-zuul</artifactid>
        </dependency>
        <dependency>
            <groupid>org.springframework.cloud</groupid>
            <artifactid>spring-cloud-starter-netflix-eureka-client</artifactid>
        </dependency>
</dependencies>

 

2.2、工程配置文件:zuul-gateway\src\main\resources\bootstrap.yml

spring:
  application:
    name: zuul-gateway
  servlet:  #spring boot2.0之前是http
    multipart:
      enabled: true   # 使用http multipart上传处理
      max-file-size: 100mb # 设置单个文件的最大长度,默认1m,如不限制配置为-1
      max-request-size: 100mb # 设置最大的请求文件的大小,默认10m,如不限制配置为-1
      file-size-threshold: 10mb  # 当上传文件达到10mb的时候进行磁盘写入
      location: /  # 上传的临时目录
server:
  port: 5555
eureka:
  client:
    serviceurl:
      defaultzone: http://${eureka.host:127.0.0.1}:${eureka.port:8888}/eureka/
  instance:
    prefer-ip-address: true
    
##### hystrix默认超时时间为1秒,如果要上传大文件,为避免超时,稍微设大一点
hystrix:
  command:
    default:
      execution:
        isolation:
          thread:
            timeoutinmilliseconds: 30000
ribbon:
  connecttimeout: 3000
  readtimeout: 30000

注意:

springboot版本之间有很大的变化,1.4.x 版本前:

multipart:
   enabled: true  
   max-file-size: 100mb 

1.5.x - 2.x 之间:

spring:
  http:
    multipart:
      enabled: true   
      max-file-size: 100mb 

2.x 之后:

spring:
  servlet:  
    multipart:
      enabled: true   
      max-file-size: 100mb 

 

2.3、网关工程启动类:

import org.springframework.boot.springapplication;
import org.springframework.boot.autoconfigure.springbootapplication;
import org.springframework.cloud.client.discovery.enablediscoveryclient;
import org.springframework.cloud.netflix.zuul.enablezuulproxy;

@springbootapplication
@enablediscoveryclient
@enablezuulproxy
public class zuulserverapplication {

    public static void main(string[] args) {
        springapplication.run(zuulserverapplication.class, args);
    }
}

 

2.4、上传代码:

import java.io.file;
import java.io.ioexception;

import org.springframework.stereotype.controller;
import org.springframework.util.filecopyutils;
import org.springframework.web.bind.annotation.postmapping;
import org.springframework.web.bind.annotation.requestparam;
import org.springframework.web.bind.annotation.responsebody;
import org.springframework.web.multipart.multipartfile;

@controller
public class zuuluploadcontroller {

    @postmapping("/upload")
    @responsebody
    public string uploadfile(@requestparam(value = "file", required = true) multipartfile file) throws ioexception {
        byte[] bytes = file.getbytes();
        file filetosave = new file(file.getoriginalfilename());
        filecopyutils.copy(bytes, filetosave);
        return filetosave.getabsolutepath();
    }
}  

 

3、测试,上传成功返回文件绝对路径:

Zuul【文件上传】