tomcat默认上传限制为2mb,即单个文件和整个表单总大小均不得超过2097152字节;该限制源于servlet 3.0+内置multipart解析器的maxfilesize与maxrequestsize默认值。
Tomcat默认上传限制是多少
Tomcat本身不直接限制XML文件(或任何文件)上传大小,真正起作用的是Servlet容器对multipart/form-data请求的解析限制。从Tomcat 8.5开始,默认使用内置的StandardMultipartResolver,其maxFileSize和maxRequestSize默认均为2MB(即2097152字节)。这意味着:单个文件超2MB,或整个表单(含多个文件、文本字段)总大小超2MB,都会触发400 Bad Request或java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException错误。
修改web.xml配置(适用于Servlet 3.0+应用)
这是最常用、也最推荐的方式,无需改Tomcat全局配置,只影响当前Web应用。需在应用的WEB-INF/web.xml中添加<multipart-config></multipart-config>节点:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<p><servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<multipart-config>
<max-file-size>52428800</max-file-size> <!-- 50MB -->
<max-request-size>52428800</max-request-size> <!-- 50MB -->
<file-size-threshold>0</file-size-threshold> <!-- 直接写入磁盘,不缓存到内存 -->
</multipart-config>
</servlet></p><p><servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping></p><p></web-app>
注意:<multipart-config></multipart-config>必须放在<servlet></servlet>内,且该servlet必须是实际处理文件上传的入口(如Spring MVC的DispatcherServlet)。如果用的是其他框架(如Struts2),要确保对应servlet被配置。
Spring Boot项目怎么配(application.properties/yml)
Spring Boot 2.0+已弃用spring.http.multipart.*,统一使用spring.servlet.multipart.*。若上传的是XML文件,仍需确保后端接收逻辑(如@RequestParam("file") MultipartFile file)能正常绑定: