Spring MVC 如何解决FileSizeLimitExceededException错误?

pu82cl6c  于 2022-11-14  发布在  Spring
关注(0)|答案(5)|浏览(167)

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

[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"   />

但是没有一个是有效的!

azpvetkf

azpvetkf1#

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

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

6qqygrtg2#

请尝试使用以下代码:

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

pcrecxhr3#

Spring中的属性S中有一个打字错误,是大写而不是小写。
对于spring-boot 1.5.2,可以在application.yml中使用以下属性

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

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

wd2eg0qa

wd2eg0qa4#

在SpringBootWebApplication类(Main)中包含以下代码:
对于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;
}
x3naxklr

x3naxklr5#

对于Spring Boot2.x及以上版本,其
应用程序属性

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

YAML语言

spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB

相关问题