有没有办法无需下载远程文件就可以获取其大小?

有没有办法无需下载远程文件就可以获取其大小?

是否有可能在不下载远程文件的情况下获取其大小?文件通过 HTTP 而不是 (S)FTP 传输。我想知道这一点,因为我想在使用有限的 3G 无线套餐时下载某些内容,并且不想一次性使用所有带宽。我根本无法访问服务器。所以我无法在服务器端执行任何操作。我使用的是 Mac OS X。使用命令行的解决方案是一个优点,但不是必需的。

顺便说一下,我想要的信息是 MP3 下载自本网站

答案1

您可以通过获取Content-Length标头来执行此操作,只要它是 HTTP。

在命令行上执行此操作的一种方法是使用curl,例如:

chris@chris-laptop:~$ curl -I -L http://www.fakkelbrigade.eu/chris/movies/drosovol1_final_h264_download.mp4
HTTP/1.1 200 OK
Date: Tue, 25 Jan 2011 22:22:51 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Tue, 11 Jan 2011 16:32:52 GMT
ETag: "3aa003-1b0c3479-49994a2c6f500"
Accept-Ranges: bytes
Content-Length: 453784697
Content-Disposition: attachment
Content-Type: application/octet-stream

Content-Length以字节为单位。

答案2

您可以发出HTTP HEAD请求来获取唯一的标题数据。Content-Length这就是您想要的。

$ telnet superuser.com 80
Trying 64.34.119.12...
Connected to superuser.com.
Escape character is '^]'.
HEAD / HTTP/1.0

HTTP/1.1 302 Found
Content-Length: 141
Location: http://stackexchange.com
Date: Tue, 25 Jan 2011 22:21:28 GMT
Connection: close

答案3

这取决于服务器的设置方式和文件。对于大多数文件,服务器都会将其发送到标头中,但它可能是动态文件,因此它不知道(并且您的浏览器无法猜测需要多长时间)。

tobylane$ telnet stackexchange.com 80

正在尝试 64.34.119.12...

连接到 stackexchange.com。

转义字符是‘^]’。

得到 /

HTTP/1.1 302 已找到

地点:http://stackexchange.com

日期:2011 年 1 月 25 日星期二 22:01:22 GMT

连接:关闭

我不确定什么是好的请求(GET/在其他网站上有效),但我希望这会有所帮助。

相关内容