是否有可能在不下载远程文件的情况下获取其大小?文件通过 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 已找到
日期:2011 年 1 月 25 日星期二 22:01:22 GMT
连接:关闭
我不确定什么是好的请求(GET/在其他网站上有效),但我希望这会有所帮助。