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

时间:2013-10-16 00:00:21

标签: ruby ruby-on-rails-3

有没有办法从图片网址中检索上次修改日期?

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

非常感谢。

这是我的代码:

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

3 个答案:

答案 0 :(得分: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

你已经完成了。

OpenURI's open接受一个阻止。在该块中,您可以访问不同的方法,这些方法将返回有关当前连接的信息。

来自文档:

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

答案 1 :(得分: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

答案 2 :(得分:1)

require 'mechanize'

agent = Mechanize.new

modified_date = agent.get("http://example.com/image1.jpg").response["last-modified"]