2

有没有办法从图像 URL 中检索最后修改日期?

我可以从浏览器中看到最后修改日期,我认为最后修改日期在 HTTP 标头内。

提前非常感谢。

这是我的代码:

image_file  = open('http://www.example.com/image1.jpg')
4

3 回答 3

3
require 'open-uri'
require 'prettyprint'

open('http://www.iana.org/_img/2013.1/iana-logo-header.svg') do |f|
  pp f.meta
end

运行它,你会得到类似的东西:

{"server"=>"Apache",
 "last-modified"=>"Fri, 04 Jan 2013 01:17:14 GMT",
 "content-type"=>"image/svg+xml",
 "content-length"=>"32870",
 "accept-ranges"=>"bytes",
 "date"=>"Wed, 16 Oct 2013 03:59:41 GMT",
 "x-varnish"=>"2012021384 2012020567",
 "age"=>"70",
 "via"=>"1.1 varnish",
 "connection"=>"keep-alive"}

运行类似:

require 'open-uri'

last_modified = open('http://www.iana.org/_img/2013.1/iana-logo-header.svg') do |f|
  f.last_modified
end
last_modified # => 2013-01-03 18:17:14 -0700

你就完成了。

OpenURIopen接受一个块。在该块内,您可以访问不同的方法,这些方法将返回有关当前连接的信息。

从文档中:

open("http://www.ruby-lang.org/en") {|f|
  f.each_line {|line| p line}
  p f.base_uri         # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
  p f.content_type     # "text/html"
  p f.charset          # "iso-8859-1"
  p f.content_encoding # []
  p f.last_modified    # Thu Dec 05 02:45:02 UTC 2002
}     

另请参阅OpenURI::Meta文档以获取更多信息,例如last_modified.

于 2013-10-16T04:00:28.887 回答
2

你打赌......虽然不能使用open-uri

require 'net/http'

http = Net::HTTP.new('www.example.com', 80)
resp = http.request_get('/image1.jpg')
date = resp['last-modified']

如果你也想读取文件,你可以在一个块中完成......

http.request_get('/index.html') do |resp|
  resp.read_body do |str|
    # ...
  end
end
于 2013-10-16T00:25:01.850 回答
1
require 'mechanize'

agent = Mechanize.new

modified_date = agent.get("http://example.com/image1.jpg").response["last-modified"]
于 2013-10-16T00:25:50.570 回答