Tomcat 8中的多部分文件最大大小配置

5
我的应用服务器是Tomcat,我需要上传文件(大文件)到我的应用程序。 POST请求的主体大小非常长,例如15 MB或更多。
是否有任何类型的配置或代码可以解决这个问题?
请记住,这是带有文件上传的multipart请求。
提前致谢。

你能说明问题是什么吗?是你的文件超过了15MB的限制吗? - Dilyano Senders
你在使用Spring或Spring Boot吗? - Bourbia Brahim
2个回答

5

Tomcat 7及以上版本有一个名为maxSwallowSize的配置项,用于指定上传文件的字节数,默认值为2MB。如果您的应用程序配置接受更大的文件(例如在Spring中使用MultipartResolver),Tomcat将拒绝该请求。

由于您可以在应用程序中配置文件大小,我的建议是在{TOMCAT_HOME}/conf/server.xml中使用值-1禁用maxShallowSize,然后仅使用应用程序中配置的大小进行操作。

具体操作如下:

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

您可以在此处找到详细说明(使用Spring框架)


“maxSwallowSize” 似乎不是最大上传大小。 这是指在上传被中止时,Tomcat 将吞噬的请求正文字节数(不包括传输编码开销)的最大值。 - Gustavo

1

1.首先配置Spring中的最大文件上传大小(覆盖默认值1MB)

Spring MVC中创建bean

@Bean
public CommonsMultipartResolver multipartResolver() {
     CommonsMultipartResolver resolver=new CommonsMultipartResolver();
     resolver.setMaxUploadSize(15728640);
     resolver.setMaxUploadSizePerFile(15728640);
     return resolver;
}

对于Spring Boot:在application.properties中添加:
spring.servlet.multipart.max-file-size=15MB
spring.servlet.multipart.max-request-size=15MB

2. 配置Tomcat的第二件事:

找到您的Tomcat服务器XML文件 $TOMCAT_HOME/conf/server.xml

然后按照以下示例更改您的连接器:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接