Получить дату создания файла по HTTP
учитывая файл на веб-сервере (например,http://foo.com/bar.zip - > доступно только через HTTP), есть ли способ получить атрибуты даты (например, дата [создана, изменена]) без загрузки всего архива в первую очередь?
прямо сейчас я загружаю архив и программно читаю атрибуты. Проблема в том, что архив-это десятки MiB, поэтому кажется пустой тратой ресурсов, чтобы загрузить все это и в конечном итоге прочитать только пару байтов информации.
Я понимаю, что пропускная способность практически бесплатна, но я не люблю быть расточительным в любом случае.
3 ответов
обязательно используйте запрос HTTP HEAD вместо запроса HTTP GET для чтения только заголовков HTTP. Если вы сделаете HTTP GET, вы все равно загрузите весь файл, даже если вы решите просто проверить заголовки HTTP.
просто для простоты, вот компиляция существующих (совершенных) ответов от @ihorko и @JanThomä, которые используют curl. Конечно, доступны и другие варианты, но вот полностью функциональный ответ.
используйте curl с :
-I, --head
(HTTP/FTP/FILE) извлеките только HTTP-заголовок! HTTP-серверы имеют командную головку, которая используется для получения только заголовка документа. При использовании на файл FTP или файл, curl отображает только размер файла и время последнего изменения.
и -s
вариант хороший здесь:
-s, --silent
Тихий или тихий режим. Не показывать индикатор прогресса или сообщения об ошибках. Делает Curl немым. Он по-прежнему будет выводить данные, которые вы просите, потенциально даже на терминал/stdout, если вы не перенаправите его.
следовательно, что-то вроде этого сделает трик:
curl -sI http://foo.com/bar.zip | grep 'Last-Modified' | cut -d' ' -f 2-