Как получить метаданные файла http? - PullRequest
2 голосов
/ 16 сентября 2008

Как получить дату создания файла или размер файла, например, это Hello.jpg на http://www.mywebsite.com/now/Hello.jpg(note: Этот URL не существует)? Цель этого вопроса - заставить мое приложение повторно загружать файлы с любого веб-сайта, когда он обнаружил, что веб-сайт имеет обновленную версию файлов, а файлы в моей локальной папке устарели. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 16 сентября 2008

Если вы используете запрос HEAD, он отправит заголовки для ресурса, там вы можете проверить заголовки элемента управления кэшем, которые сообщат вам, был ли изменен ресурс, время последнего изменения, размер (длина содержимого) и дата.

$ telnet www.google.com 80
Trying 216.239.59.103...
Connected to www.l.google.com.
Escape character is '^]'.
HEAD /intl/en_ALL/images/logo.gif HTTP/1.0

HTTP/1.0 200 OK
Content-Type: image/gif
Last-Modified: Wed, 07 Jun 2006 19:38:24 GMT
Expires: Sun, 17 Jan 2038 19:14:07 GMT
Cache-Control: public
Date: Tue, 16 Sep 2008 09:45:42 GMT
Server: gws
Content-Length: 8558
Connection: Close

Connection closed by foreign host.

Обратите внимание, что вам, вероятно, придется украсить этот простой и простой подход множеством эвристик в зависимости от сумасшествия администратора каждого веб-сервера, поскольку каждый может отправлять любые заголовки, которые им нравятся. Если они не предоставляют заголовки для кэширования (Last-Modified, Expires, Cache-Control), ни Content-Length, ни etag, вам придется перезагружать его для проверки.

0 голосов
/ 16 сентября 2008

Для этой цели веб-сервер может отправить последний измененный и / или заголовок etag. И вы можете отправить заголовок if-updated-Since в вашем запросе.

см. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html разделы 14.19, 14.25 и 14.29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...