如何解决FileSizeLimitExceededException错误?

时间:2019-03-23 08:43:27

标签: java spring spring-boot spring-mvc tomcat9

上传excel文件大小超过1MB时出现错误。

[org.springframework.web.multipart.MultipartException:无法解析多部分servlet请求;  嵌套的异常是java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase $ FileSizeLimitExceededException:  字段文件超过了其最大允许大小1048576字节。]

我试图通过遵循配置更改来解决,但没有一个对我有帮助。

在这里,我正在使用(1)Spring boot:1.5.2(2)Tomcat 9.0

步骤1:application.yml spring: http: multipart: max-file-size:5MB max-request-size:5MB

第2步:我也尝试了以下注释:

@MultipartConfig(fileSizeThreshold=1024*1024*10,maxFileSize=1024*1024*10,maxRequestSize=1024*1024*10)

步骤3:        <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" maxSwallowSize="-1" />

您能帮忙吗

4 个答案:

答案 0 :(得分:1)

Spring的属性S中有一个错字是大写而不是小写。

使用spring-boot 1.5.2,您可以在application.yml中使用以下属性

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

请确保在yaml文件中使用空格而不是制表符。

答案 1 :(得分:1)

我尝试了Alien的解决方案,但给出了过时的错误,因此我想分享新的解决方法

spring.servlet.multipart.max-request-size=10MB
spring.servlet.multipart.max-file-size=10MB

答案 2 :(得分:1)

尝试使用以下代码:

spring:
  profiles: development
  servlet:
    multipart:
      enabled: true
      max-file-size: 10MB
      max-request-size: 10MB

答案 3 :(得分:0)

在SpringBootWebApplication类(主要)中包含以下代码:

对于Java 8:

@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbedded() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> {
        if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
            //-1 for unlimited
            ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
        }
    });
    return tomcat;
}

对于Java 7:

@Bean
public TomcatEmbeddedServletContainerFactory tomcatEmbedded() {
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
    tomcat.addConnectorCustomizers(new TomcatConnectorCustomizer()  {
        @Override
        public void customize(Connector connector) {
            if ((connector.getProtocolHandler() instanceof AbstractHttp11Protocol<?>)) {
                //-1 for unlimited
                ((AbstractHttp11Protocol<?>) connector.getProtocolHandler()).setMaxSwallowSize(-1);
            }
        }
    });
    return tomcat;
}