处理报错:org.apache.tomcat.util.http.fileupload.impl.FileCountLimitExceededException

今天实现上传功能时突然发现报错,显示文件个数超限,让AI处理结果没处理好,那就只能人工介入了,发现请求总共就带了两三个文件,怎么会呢,前端代码附上

$.ajax({
	url: "xxx",
	data: formData,
	type: 'POST',
	processData: false,
	contentType: false,
	success: function (data) {
		console.log(data)
	},
	error: function () {
		console.log("提交失败")
	}
})

报错现象如下

org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:132)
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:111)
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:87)
	at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:112)
...


Caused by: org.apache.tomcat.util.http.fileupload.impl.FileCountLimitExceededException: attachment
	at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:459)
	at org.apache.catalina.connector.Request.parseParts(Request.java:2650)
	at org.apache.catalina.connector.Request.getParts(Request.java:2536)
	at org.apache.catalina.connector.RequestFacade.getParts(RequestFacade.java:773)
	at jakarta.servlet.http.HttpServletRequestWrapper.getParts(HttpServletRequestWrapper.java:315)
	at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:94)

跟进org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(RequestContext)代码看看

仔细一看,发现multipart解析器将所有表单字段(包括普通文本字段)都计算在内,当总数超过服务器配置的限制时就会抛出异常

那就跟进引用代码org.apache.catalina.connector.Request.parseParts(boolean),发现跟maxParameterCount和maxPartCount有关

maxParameterCount默认值就很大,可忽略

那就是跟maxPartCount有关

那这就简单了,这个值可以通过配置文件配置处理

server:
  tomcat:
    max-part-count: 200 # 设置最大部件数量为200

重试,功能正常,问题解决

理论上不应该一次性把请求的文件跟表单一起提交,图省事是会这样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值