我的问题重复 javax.servlet.HttpServletRequest.getContentLength() returns int only ,但是我感兴趣的是不同的。什么是正确的返回 javax.servlet.HttpServletRequest.getContentLength() 当内容长度大于 Integer.MAX_VALUE 时? 问题作者假设它是-1。然而 servlet 规范并未涵盖该主题。 http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getContentLength%28%29 当长度未知时,它显示为-1。这是不正确的,因为长度已知,根本不适合整数。 EE7 弥补了这一差距 http://docs.oracle.com/javaee/7/api/javax/servlet/ServletRequest.html#getContentLength%28%29 甚至引入了 getContentLengthLong()。 但是我的问题是,如果我实现 EE6 规范,在内容长度 > Integer.MAX_VALUE 的情况下什么是正确的行为?
最佳答案
您需要阅读 Java EE 7 version of ServletRequest.getContentLength() 的 JavaDoc .
它说得很清楚:
... or -1 if the length is not known or is greater than Integer.MAX_VALUE
请注意,如果您尝试读取较大的请求正文,那么它几乎肯定会被分块。当然,许多 HTTP 防火墙和代理都会对大型主体进行分块。
关于javax.servlet.HttpServletRequest.getContentLength() 在 EE6 中的行为是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24132836/