Ruby:如何下载未知格式的文件?
我想从各种URL下载favicon,所以我这样做:Ruby:如何下载未知格式的文件?,ruby,Ruby,我想从各种URL下载favicon,所以我这样做: require 'mechanize' agent = Mechanize.new link = 'http://www.google.com/s2/favicons?domain_url=blog.ycombinator.com/' agent.get(link).save "images/pic.png" 问题是,我如何知道http://www.google.com/s2/favicons?domain_url=blog.
require 'mechanize'
agent = Mechanize.new
link = 'http://www.google.com/s2/favicons?domain_url=blog.ycombinator.com/'
agent.get(link).save "images/pic.png"
问题是,我如何知道http://www.google.com/s2/favicons?domain_url=blog.ycombinator.com/
返回是一个.png
?不是.ico
,不是.jpg
将其保存为不同的格式会产生任何问题吗?我应该如何相应地保存文件?通过调用
Mechanize\get
收到的是Mechanize::Image
对象的一个实例,该对象包含大量有关图像本身的信息
▶ got = agent.get link
#⇒ #<Mechanize::Image:0x00000005315e48 ...>
▶ ext = got.response['content-type'].split('/').last
#⇒ "png"
▶ got.save "images/pic.#{ext}"
不过,在这种特殊情况下,我相信
情况下,当足够了。通过调用Mechanize#get
接收到的是Mechanize::Image
对象的一个实例,它有很多关于图像本身的信息
▶ got = agent.get link
#⇒ #<Mechanize::Image:0x00000005315e48 ...>
▶ ext = got.response['content-type'].split('/').last
#⇒ "png"
▶ got.save "images/pic.#{ext}"
不过,在这种特殊情况下,我相信当
时的情况就足够了。内容类型
是正确的方法,但您应该使用gem/库为给定的MIME类型查找适当的扩展名(或者您还可以使用.jpeg
和.x-icon
文件),当我执行get.save”图像/pic.#{ext}
,如果存在同名文件,该文件将被重命名为pic2
。我如何使其替换现有文件?@cqcn1991Mechanize
负责不重写文件。我不确定,如果有方法指示它重写现有文件,我将使用纯ruby文件。删除(文件名)如果File.exist?(filename)
在获取.save之前内容类型是正确的方法,但是您应该使用gem/库来查找给定MIME类型的正确扩展名(或者您可以在执行获取.image/pic.#{ext}
操作时,添加jpeg
和x-icon
文件),如果存在同名文件,则该文件将重命名为pic2
。如何使其替换现有的?@cqcn1991Mechanize
负责不重写文件。我不确定,如果有方法指示它覆盖现有文件,我会在get.save
之前使用纯rubyFile.delete(filename)if File.exist?(filename)
。