如何获取http文件元数据?

时间:2008-09-16 09:41:37

标签: http

如何获取文件的创建日期或文件大小,例如http://www.mywebsite.com/now/Hello.jpg(note处的Hello.jpg:此URL不存在)?此问题的目的是使我的应用程序在检测到网站具有文件的更新版本且本地文件夹中的文件已过期时从任何网站重新下载文件。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果您使用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,那么你将不得不重新加载它以进行测试。

答案 1 :(得分:0)

网络服务器可能会为此目的发送最后修改过的和/或etag标头。 您可以在请求中发送if-modified-since标头。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 第14.19,14.25和14.29节