之前做一个数据上传的功能,前端读取excel然后回传json给后端进行保存。有一次传了一个4兆多的数据包,然后就报错了,减少数据量后是正常的,于是猜测是数据过大导致的,又想到之前传文件的时候用'Content-Type':'application/octet-stream'进行传输,是OK的,于是就把前端的请求头的Content-Type改成application/octet-stream,并且将数据用Blob转成二进制大对象进行传输,后端用request.getInputStream()读取数据并转换使用,这样就可以接收大数据包的上传了。
后面通过查阅资料发现其实不用修改代码,直接修改tomcat的maxPostSize参数也可以实现大数据的接收,测试之后发现确实如此。于是就有了疑惑,都是post请求,为什么采用application/octet-stream传输数据的大小可以不受maxPostSize的限制呢?另外,tomcat如何对使用application/octet-stream进行传输的数据大小进行限制呢?

tomcat的maxPostSize对application/octet-stream无效?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 一枚路过的程序猿 2023-08-30 14:11关注
Tomcat 在处理 HTTP 请求时,可以通过配置 maxPostSize 参数来限制请求体的最大大小。但是需要注意的是,maxPostSize 参数主要是针对普通的 POST 请求,特别是表单数据等的处理。对于 application/octet-stream 类型的请求体,这个参数的限制并不直接生效,因为这种类型的请求不会被 Tomcat 解析为表单数据。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报