Получить дату создания файла по HTTP - PullRequest
9 голосов
/ 01 декабря 2010

Учитывая файл на веб-сервере (например, http://foo.com/bar.zip -> доступный только через HTTP), есть ли способ получить атрибуты даты (например, дата [создано, изменено]) без загрузки всего архиваво-первых?

Прямо сейчас я скачиваю архив и читаю атрибуты программно.Проблема в том, что в архиве находятся десятки МиБ, поэтому кажется, что загрузка всего этого - пустая трата ресурсов, и в итоге получается считывать только пару байтов информации.Я не люблю быть расточительным в любом случае.

Ответы [ 3 ]

8 голосов
/ 01 декабря 2010

Обязательно используйте запрос HTTP HEAD вместо запроса HTTP GET только для чтения заголовков HTTP.Если вы выполните HTTP GET, вы все равно загрузите весь файл, даже если вы решите просто проверить заголовки HTTP.

8 голосов
/ 01 декабря 2010

Попробуйте прочитать Последнее изменение из заголовка

3 голосов
/ 08 сентября 2014

Для простоты приведем подборку существующих (совершенных) ответов @ihorko и @ JanThomä, в которых используется curl. Конечно, возможны и другие варианты, но вот полностью функциональный ответ.

Используйте curl с опцией -I:

-I, --head
(HTTP / FTP / FILE) Получить только HTTP-заголовок! На HTTP-серверах есть команда HEAD, которая используется для получения только заголовка документа. При использовании в файле FTP или FILE, curl отображает только размер файла и время последнего изменения.

Кроме того, опция -s хороша здесь:

-s, --silent
Тихий или тихий режим. Не показывать индикатор прогресса или сообщения об ошибках. Делает Curl немым. Он по-прежнему будет выводить запрашиваемые вами данные, потенциально даже в терминал / стандартный вывод, если вы не перенаправите его.

Следовательно, что-то вроде этого поможет:

curl -sI http://foo.com/bar.zip | grep 'Last-Modified' | cut -d' ' -f 2-
...