首页 文章

Spring Cloud Netflix Zuul大文件上传

提问于
浏览
0

我正在使用Spring Boot进行项目,我正在尝试上传大文件但不知何故它不起作用 .

我在端口8080上运行Spring Boot Zuul(@EnableZuulProxy),然后是另一个应该处理上传的微服务(让我们称之为数据存储) .

我将一个多部分请求发布到http://localhost:8080/zuul/my/upload/endpoint,其中包含一个文件和一个文本字符串 .

当我上传100MB的文件时,一切正常 . Zuul将请求传递给数据存储区,请求进入并存储 . 但是当我尝试上传一个更大的文件(150MB)时,Zuul处理请求并将其传递给数据存储区,但随后在某个地方从请求中删除了一个多部分参数,然后数据存储区错误返回400并说“必需的请求部分”字符串'不存在' .

我在微服务(zuul和数据存储区)中都有以下配置

spring:
  servlet:
    multipart:
      max-file-size: 1000MB
      max-request-size: 1000MB

有谁知道如何解决这个问题?我已经尝试添加CommonsMultipartResolver,但这并没有改变任何东西 .

1 回答

  • 0

    而不是 servlet ,您应该使用 http .

    在我的Zuul application.yml 以下属性工作:

    spring:
      http:  
        multipart:
          max-file-size: 1000MB
          max-request-size: 1000MB
    

    在Spring boot 2中,以下属性工作:

    spring:
      servlet:
        multipart:
          max-file-size: 1000MB
          max-request-size: 1000MB
    

    这里解释了属性:

    {
       "name": "spring.http.multipart.max-file-size",
       "type": "java.lang.String",
       "description": "Max file size. Values can use the suffixes \"MB\" or \"KB\" to indicate megabytes or\n kilobytes respectively.",
       "sourceType": 
       "org.springframework.boot.autoconfigure.web.MultipartProperties",
       "defaultValue": "1MB"
    },
    {
       "name": "spring.http.multipart.max-request-size",
       "type": "java.lang.String",
       "description": "Max request size. Values can use the suffixes \"MB\" or \"KB\" to indicate megabytes or\n kilobytes respectively.",
       "sourceType": 
       "org.springframework.boot.autoconfigure.web.MultipartProperties",
       "defaultValue": "10MB"
    },
    

相关问题