【问题标题】:I am trying to set maxFileSize but it is not honored我正在尝试设置 maxFileSize 但它不被尊重
【发布时间】:2015-04-18 19:26:18
【问题描述】:

我正在使用 JHipster 开发一个应用程序。我在 application-dev.yml 文件中添加了以下内容:

spring:

    profiles:
        active: dev

    multipart:
        maxFileSize: -1

但是当我尝试上传大于 1MB 的文件时,我仍然遇到错误:

Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (20663006) exceeds the configured maximum (10485760)

我错过了什么?看起来这应该很简单。

更新 1

我按照 Andy 的建议从 spring 配置中取消嵌套它,但仍然出现错误。更新 yml 文件:

server:
    port: 8080

multipart:
        maxFileSize: -1

spring:

    profiles:
        active: dev

    datasource: ...

更新 2

在较新版本的 Sprint Boot 上再次遇到此问题,不得不更改为:

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

【问题讨论】:

  • 查看我编辑的答案;你也需要配置multipart.maxRequestSize

标签: spring-boot jhipster


【解决方案1】:

除了配置最大文件大小外,如果您有一个大于 10MB 的文件,或者您想在同一个请求中上传多个总大小超过 10MB 的文件,您可能还需要配置最大请求大小。

需要使用的确切属性取决于您使用的 Spring Boot 版本changed in 1.4

Spring Boot 1.3.x 及更早版本

  • multipart.maxFileSize
  • multipart.maxRequestSize

Spring Boot 1.4.x 和 1.5.x

  • spring.http.multipart.maxFileSize
  • spring.http.multipart.maxRequestSize

Spring Boot 2.x

  • spring.servlet.multipart.maxFileSize
  • spring.servlet.multipart.maxRequestSize

【讨论】:

  • 这是正确答案。同时提供 maxFileSize 和 maxRequestSize 就可以解决问题。
  • 像这样取消嵌套:multipart: maxFileSize: 100Mb maxRequestSize: 100Mb 它对我有用:)
  • @christopher 我已经更新了我的答案以反映不同版本的 Spring Boot 使用的不同属性
  • 在 spring boot 1.5 中,它再次更改为特定于技术的github.com/spring-projects/spring-boot/wiki/…,例如 server.tomcat.max-http-post-size
  • 就我而言,唯一的解决方案是设置spring.servlet.multipart.maxFileSizespring.servlet.multipart.maxRequestSize 属性,因为配置是由org.springframework.boot.autoconfigure.web.servlet.MultipartProperties 完成的
【解决方案2】:

对于 spring-boot 2.x,文件:src/main/resources/application.yaml

spring:
  servlet:
    multipart:
      max-file-size: -1
      max-request-size: -1

【讨论】:

    【解决方案3】:

    就像 Emilio Garcia 提到的,它必须放在 spring.http.multipart 下,而不是单独放在 multipart 下。我最近将一个项目从 Spring Boot 1.3.5 升级到 1.4.1 并遇到了 multipart.maxFileSize 不再受尊重的问题.. 它似乎已经改变了。

    【讨论】:

      【解决方案4】:

      here 所述,您需要使用这些属性:

      spring.http.multipart.max-file-size=128KB
      spring.http.multipart.max-request-size=128KB
      

      【讨论】:

      【解决方案5】:

      Grails 3 的默认文件大小为 128000。

      如果您想增加大小,请转到项目的 application.yml,因为我想将大小增加到 25 兆字节。文件大小以字节为单位设置,正如我们在上面看到的,最大大小为 128000 字节。所以我必须将 25 mb 转换为字节。

      25 mb * 1024 kb * 1024 b = 26.214.400 字节

      现在好了 /grails-app/conf/application.yml

      并正确地写下这些行

      圣杯: 控制器: 上传: 最大文件大小:26214400 最大请求大小:26214400

      现在清理应用程序并再次运行,它会产生奇迹。谢谢

      【讨论】:

        【解决方案6】:

        将以下添加到配置中对我有用:

        ribbon:
          ReadTimeout: 20000
          ConnectTimeout: 20000
        

        Read Timeout on Request

        【讨论】:

          【解决方案7】:

          用于使用外部 tomcat 配置 CommonsMultipartResolver 定义一个 bean 名称为 MultipartFilter.DEFAULT_MULTIPART_RESOLVER_BEAN_NAME 由于默认 Spring Boot 的默认 MultipartFilter 会查找具有默认 bean 名称的解析器。

          @Bean(name = MultipartFilter.DEFAULT_MULTIPART_RESOLVER_BEAN_NAME)
          protected MultipartResolver getMultipartResolver() {
              CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
              multipartResolver.setMaxUploadSize(20971520);//size in bytes
              multipartResolver.setMaxInMemorySize(20971520);//size in bytes
              return multipartResolver;
          }
          

          【讨论】:

            猜你喜欢
            • 2019-08-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-06-29
            • 2021-09-07
            • 2020-11-17
            • 2021-02-16
            • 2019-05-04
            相关资源
            最近更新 更多