2

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

4

2 回答 2

5

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

于 2008-09-16T09:45:44.263 回答
1

网络服务器可能会为此目的发送一个 last-modified 和/或 etag 标头。您可能会在请求中发送一个 if-modified-since 标头。

请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 第 14.19、14.25 和 14.29 节

于 2008-09-16T09:45:48.227 回答