【问题标题】:How to resolve FileSizeLimitExceededException error?如何解决 FileSizeLimitExceededException 错误?
【发布时间】:2019-08-14 04:12:19
【问题描述】:

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

[org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;
 nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:
 The field files exceeds its maximum permitted size of 1048576 bytes.]

我尝试通过应用以下配置更改来修复它,但它们都没有帮助我。

尝试application.yml文件中的配置:

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

我还尝试了以下注释:

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

最后我做了这个改变:

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

但没有任何作用!

【问题讨论】:

  • 该属性被命名为spring.http.multipart.max-file-size,而不是Spring.http.multipart.max-file-size
  • 请尝试清理项目并确保您没有拼错

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


【解决方案1】:

我尝试了 Alien 的解决方案,但它给出了已弃用的错误,因此我想分享新的解决方案

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

【讨论】:

    【解决方案2】:

    尝试使用以下代码:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

      • 感谢您的评论,这个错字只出现在 Stackoverflow 页面的复制过去。在我的应用程序中,它可能只是小案例(即弹簧)
      【解决方案4】:

      在您的 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;
      }
      

      【讨论】:

        猜你喜欢
        • 2021-01-16
        • 2019-06-14
        • 1970-01-01
        • 2019-04-06
        • 2021-12-29
        • 2018-06-30
        • 2012-02-18
        • 2011-08-30
        • 2014-06-13
        相关资源
        最近更新 更多