我试图弄清楚如何验证我输入载波的内容实际上是图像。我获取图像网址的来源并没有返回所有实时网址。有些图像已不复存在。不幸的是,它并没有真正返回正确的状态代码或任何内容,因为我正在使用一些代码来检查远程文件是否存在并且它通过了该检查。因此,现在为了安全起见,我想要一种方法来验证我在继续下载之前是否获取了有效的图像文件。
这是我使用的远程文件检查代码,仅供参考,但我更喜欢实际上可以识别文件是图像的代码。
require 'open-uri'
require 'net/http'
def remote_file_exists?(url)
url = URI.parse(url)
Net::HTTP.start(url.host, url.port) do |http|
return http.head(url.request_uri).code == "200"
end
end
我会检查服务是否在 Content-Type HTTP 标头中返回正确的 mime 类型。 (这是哑剧类型的列表 http://en.wikipedia.org/wiki/Mime_type)
例如,StackOverflow主页的Content-Type是text/html; charset=utf-8
,你的头像图片的 Content-Type 是image/png
检查 Content-Type 标头image
在 ruby 中使用 Net::HTTP,您可以使用以下内容:
def remote_file_exists?(url)
url = URI.parse(url)
Net::HTTP.start(url.host, url.port) do |http|
return http.head(url.request_uri)['Content-Type'].start_with? 'image'
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)