Получить удаленный размер файла через HTTP без загрузки указанного файла

Есть ли способ получить размер (удаленного, http) файла, не загружая его?

Все другие подобные вопросы, кажется, вращаются вокруг захвата expectedContentLength из объекта NSURLResponse в didReceiveResponse:, но я не хочу загружать файл, я просто хочу знать, насколько он велик.


person Kalle    schedule 03.08.2010    source источник


Ответы (1)


Попробуйте сделать запрос HEAD, он возвращает только заголовки с включенным заголовком Content-Length.

~$ curl -I http://google.com/
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Length: 219
...
person user183038    schedule 03.08.2010
comment
В целом правильно, но на всякий случай сервер отправляет Content-Length, он может этого не делать, если длина контента ему неизвестна. Но это лучшее, что может сделать клиент. - person Artyom; 03.08.2010
comment
Хм, кажется, в NSURL есть ошибки с запросами HEAD (по крайней мере, согласно cocoabuilder.com/archive/cocoa/ ), но я попробую. Спасибо! - person Kalle; 03.08.2010
comment
Content-Length также сообщает длину сжатого gzip, если сжатие включено на сервере. Например, google.com определенно больше 219 байт. - person Kalle; 05.08.2010