gpt4 book ai didi

java - 如何获取 GET 请求的文件大小

转载 作者:行者123 更新时间:2023-12-01 21:33:53 28 4
gpt4 key购买 nike

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws Exception{
...
HttpServletRequest req = (HttpServletRequest) request;
if ("POST".equals(req.getMethod()))
{
long bytesTransferred = request.getContentLength();
...
}
else
{
long bytesTransferred = request.getContentLength();
...
}

当我发送 GET 请求获取文件时,如何获取文件大小?我尝试使用request.getContentLength(),它总是返回-1。如果我使用 POST 上传文件,它可以正常工作,但仍然无法返回确切的文件大小。

有什么想法吗?谢谢。

最佳答案

when I send a GET request to get a file, how to get the file size?

当服务器向客户端发送文件时(假设客户端是 Web 浏览器),它“知道”文件的大小,因为它将内容写入 ServletResponse 对象的 OutputStream 中。当您将文件发送到客户端时,通过调用 response.setContentLength(<length>) 设置文件的大小。在 servlet 中。这将设置 Content-Length相应http响应的 header 。 Here is the JavaDoc of the setContentLength() method 。然后,您可以使用developer tools查看文件的大小或发送到浏览器的任何内容。您最喜欢的浏览器。

I tried using request.getContentLength(), it always return -1

HeregetContentLength() 的 JavaDoc ServletRequest类的方法:

Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not known.

当您发送POST时向服务器发送请求,请求数据在请求正文中发送。所以getContentLength()方法返回与数据长度相对应的值。

但是一个GET request 发送附加到请求 URL 的请求数据,例如 param1=paramValue1&param2=paramValue2&... 。这意味着请求正文中没有数据。因此该方法按照指定返回 -1。

关于java - 如何获取 GET 请求的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191588/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com