nwsxdxqs 2023-08-30 12:01 采纳率: 100%
浏览 16
已结题

tomcat的maxPostSize对application/octet-stream无效?

之前做一个数据上传的功能,前端读取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进行传输的数据大小进行限制呢?

  • 写回答

1条回答 默认 最新

  • 一枚路过的程序猿 2023-08-30 14:11
    关注

    Tomcat 在处理 HTTP 请求时,可以通过配置 maxPostSize 参数来限制请求体的最大大小。但是需要注意的是,maxPostSize 参数主要是针对普通的 POST 请求,特别是表单数据等的处理。对于 application/octet-stream 类型的请求体,这个参数的限制并不直接生效,因为这种类型的请求不会被 Tomcat 解析为表单数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月17日
  • 已采纳回答 9月9日
  • 创建了问题 8月30日