为了处理HTTP POST或PUT中的大型请求主体,依赖HttpServletRequest.getContentLength()不是一个好主意,因为它只返回整数值,或者对于> 2GB的请求主体,返回-1.
但是,我认为没有理由,为什么不应该允许更大的请求机构.RFC 2616说
任何大于或等于零的Content-Length都是有效值.
是否有效使用HttpServletRequest.getHeader('content-length')并将其解析为Long?
是的,这是一个很好的方法 - 使用getHeader("Content-Length")(大写)和Long.parseLong(..).我相信这是容器正在做的事情,但它受限于intserlvet规范.
从Servlet 3.1(Java EE 7)开始,可以使用一种新方法getContentLengthLong():
long contentLength = request.getContentLengthLong();
Run Code Online (Sandbox Code Playgroud)
这同样适用于答复的对应方setContentLengthLong():
response.setContentLengthLong(file.length());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9671 次 |
| 最近记录: |