Вообще возможно получать размер удаленного файла, не загружая его? Файл по HTTP, не (S) FTP. Я хочу знать это, потому что я хочу загрузить что-то, в то время как соединено ограниченным беспроводным планом 3G, и я не хочу использовать всю свою пропускную способность в одном населении. У Меня нет доступа к серверу, вообще. Таким образом, я ничего не могу сделать серверная сторона. Я нахожусь на Mac OS X. Решения, которые используют командную строку, плюс, но не требуются.
Между прочим, определенный файл, для которого я хочу информацию, является загрузкой MP3 с этого веб-сайта.
Можно сделать это путем получения 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
находится в байтах.
Можно выйти 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
Это зависит от того, как сервер является установкой и файлом. С большинством файлов сервер отправляет его в заголовках, но это может быть динамический файл, и поэтому это не знает (и Ваш браузер не может предположить, сколько времени это возьмет.
tobylane$ telnet stackexchange.com 80
Попытка 64.34.119.12...
Подключенный к stackexchange.com.
Символ ESC является '^]'.
ДОБЕРИТЕСЬ /
HTTP/1.1 302 Найденных
Местоположение: http://stackexchange.com
Дата: вторник, 25 января 2011 22:01:22 GMT
Соединение:закрыть
Я не уверен, что хороший запрос (ДОБЕРИТЕСЬ / работал над другими сайтами), но я надеюсь, что это помогает.