我正在尝试设置 maxFileSize 但它不被接受

I am trying to set maxFileSize but it is not honored

我正在使用 JHipster 开发应用程序。我已将以下内容添加到我的应用程序-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

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

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

Spring 启动 1.3.x 及更早版本

  • multipart.maxFileSize
  • multipart.maxRequestSize

Spring 启动 1.4.x 和 1.5.x

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

Spring开机2.x

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

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

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

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

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

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

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

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

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

ribbon:
  ReadTimeout: 20000
  ConnectTimeout: 20000

Read Timeout on Request

用于使用外部配置 CommonsMultipartResolver tomcat 定义一个 bean,bean 名称为 MultipartFilter.DEFAULT_MULTIPART_RESOLVER_BEAN_NAME 作为默认 spring 引导的默认 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;
}