我的问题重复了javax.servlet.HttpServletRequest.getContentLength() returns int only,但是我对其他问题感兴趣。什么是正确的回报
内容长度大于Integer.MAX_VALUE时javax.servlet.HttpServletRequest.getContentLength()?
问题作者假设其为-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。
它说得很清楚:
...;如果长度未知或大于Integer.MAX_VALUE,则为-1。
请注意,如果您尝试读取大的请求正文,则几乎肯定会对其进行分块。当然,许多HTTP防火墙和代理都会将大型实体分块。