5

Можно ли вообще получить размер удаленного файла, не загружая его? Файл через HTTP, а не (S)FTP. Я хочу знать это, потому что я хочу загрузить что-то, будучи подключенным к ограниченному тарифу на беспроводную связь 3G, и я не хочу использовать всю мою пропускную способность в одном щелчке. У меня нет доступа к серверу, вообще. Так что я ничего не могу сделать на стороне сервера. Я нахожусь на Mac OS X. Решения, которые используют командную строку, являются плюсом, но не обязательны.

Кстати, конкретный файл, для которого я хочу получить информацию, - это загрузка MP3 с этого сайта.

3 ответа3

4

Вы можете сделать это, получив заголовок 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 в байтах.

1

Вы можете выдавать запросы 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
0

Это зависит от того, как настроен сервер и файл. С большинством файлов сервер отправляет его в заголовках, но это может быть динамический файл, и поэтому он не знает (и ваш браузер не может угадать, сколько времени это займет.

tobylane $ telnet stackexchange.com 80

Попытка 64.34.119.12 ...

Подключен к stackexchange.com.

Escape-символ '^]'.

ПОЛУЧИТЬ /

HTTP/1.1 302 найдено

Расположение: http://stackexchange.com

Дата: вторник, 25 января 2011 г. 22:01:22 GMT

Подключение: закрыть

Я не уверен, что хороший запрос (GET / работал на других сайтах), но я надеюсь, что это помогает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .