javax.servlet.HttpServletRequest.getContentLength() 只返回 int

2022-09-04 01:52:22

为了在 HTTP POST 或 PUT 中处理大型请求正文,依赖 不是一个好主意,因为它只返回整数值,或者对于 2GB 的请求> -1。HttpServletRequest.getContentLength()

但是,我认为没有理由不允许更大的请求机构。RFC 2616 说

任何大于或等于零的内容长度都是有效值。

使用并将其解析为 Long 是否有效?HttpServletRequest.getHeader('content-length')


答案 1

从 Servlet 3.1 (Java EE 7) 开始,可以使用一种新方法 getContentLengthLong()

long contentLength = request.getContentLengthLong();

这同样适用于响应上的对应项 setContentLengthLong()

response.setContentLengthLong(file.length());

答案 2

是的,这是一个很好的方法 - 使用(大写)和。我相信这是容器正在做的事情,但它仅限于serlvet规范。getHeader("Content-Length")Long.parseLong(..)int


推荐