问题描述
InputStream stream = request.getInputStream();int streamLength = request.getContentLength();byte[] data = new byte[streamLength];stream.read(buffer, 0, streamLength);代码如上,当request请求中的字节数组超过一定长度之后,data数组获取到的数据全是0,大概是前180个是正常的,超过180个之后data数组中就全是0(data[180]之后的数字取出来全是0),大概是180个,反正有一个具体的固定的值,每次超过都是0,使用的是jdk7,tomcat7先谢谢大家了。
解决方案
byte[] data = new byte[streamLength];int count = 0;int len;while ((len = stream.read(data, count, streamLength - count) != -1) { count += len;}分段读,每次是有点数据他就先给你点,剩下的还在路上
解决方案二:
打印下stream.read(buffer, 0, streamLength); 返回的值,是不是也是180。
解决方案三:
最近通过POST方式提交数据量过大,在后台接收不到数据,当时第一个感觉是GET方式有数据限制,POST没有数据限制,可是查看代码发现确实是POST提交,问题出在哪里了呢? 通过查看资料,发现tomcat默认传输最大的数据限制 ,最后的解决办法是设大tomcat的conf下的server.xml中8080Connector的maxPostSize的值.(设为0是取消POST的大小限制) 打开tomcat目录下的conf目录,修改server.xml 文件 增加 maxPostSize="0" 即可
解决方案四:
byte[] data = new byte[streamLength]; stream.read(buffer, 0, streamLength); 是不是要改成byte[] data = new byte[streamLength]; stream.read(data, 0, streamLength);才对呀
解决方案五:
你确定在的测试的方法中只有这段代码吗??InputStream stream = request.getInputStream();int streamLength = request.getContentLength();byte[] data = new byte[streamLength];stream.read(buffer, 0, streamLength); 还有没有其他的代码??????比如在InputStream stream = request.getInputStream();前面还有代码??
解决方案六:
因該是POST跟GET的問題,GET有限制長度。