我正在尝试设置maxFileSize,但它没有兑现

时间:2015-02-17 22:51:24

标签: spring-boot jhipster

我正在使用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

我按照安迪的建议从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

7 个答案:

答案 0 :(得分:89)

除配置最大文件大小外,如果您的单个文件大于10MB,或者您希望在同一请求中上传多个文件,并且大小更多,则可能还需要配置最大请求大小超过10MB。

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

如上所述here,您需要使用以下属性:

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

答案 4 :(得分:0)

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

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

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

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

并正确写下这些行

grails:  控制器:   上载:     maxFileSize:26214400     maxRequestSize:26214400

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

答案 5 :(得分:0)

在配置中添加以下内容对我来说很有效:

ribbon:
  ReadTimeout: 20000
  ConnectTimeout: 20000

Read Timeout on Request

答案 6 :(得分:0)

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