Tomcat 10.1.42配置最大文件上传数量以解决FileCountLimitExceededException报错
Tomcat 10.1.42配置最大文件上传数量以解决FileCountLimitExceededException报错
刚升级Tomcat 10.1.42后遇到这个报错的时候我也头大,翻了半天文档只找到文件大小、请求大小的配置,完全没看到文件数量限制的说明——后来才发现这是Tomcat 10.1.x系列后期新增的一个限制参数,默认值比较小,所以多文件上传就触发了。
下面给你两种配置方案,按需选择:
1. 全局配置(所有Web应用生效)
直接修改Tomcat安装目录下的conf/server.xml,找到你正在使用的Connector节点(比如8080端口的HTTP Connector),添加maxFileCount属性,设置你需要的最大文件数量,比如允许一次上传50个文件:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxFileCount="50" />
修改后记得重启Tomcat,这个配置会对所有部署在Tomcat上的Web应用生效。
2. 单个应用配置(仅目标应用生效)
如果不想修改全局配置,只想给某个特定应用放宽限制,可以在该应用的META-INF/context.xml文件里添加配置(如果没有这个文件就新建一个):
<Context> <!-- 这里设置为30,代表该应用一次请求最多允许上传30个文件 --> <Parameter name="org.apache.tomcat.util.http.fileupload.FileUploadBase.maxFileCount" value="30" override="false"/> </Context>
或者,你也可以在Tomcat的conf/Catalina/localhost目录下创建对应应用的XML配置文件(比如应用名为myapp就创建myapp.xml),内容和上面的context.xml一致即可。
补充提醒
- 这个
maxFileCount参数的默认值通常是10,这就是为什么你上传多个文件会触发FileCountLimitExceededException的原因 - 配置数值的时候别太离谱,根据自己的业务需求来设置,避免恶意请求上传大量文件消耗服务器资源
- 如果你同时用了Servlet 3.0+的
multipart-config(不管是在web.xml里配置还是用注解),它管的是单个文件大小、总请求大小,和maxFileCount的文件数量限制是互补的,两者都得满足要求才行
内容来源于stack exchange




