我正在使用gem nokogiri
来废弃img
代码src
值。
有段时间某些时间url
没有显示带扩展名的图片文件名。
所以我试图检测图像MIME
类型。
为此我试过
MIME::Types.type_for("http://web.com/img/12457634").first.content_type # => "image/gif"
并显示错误:
undefined method `content_type' for nil:NilClass (NoMethodError)
任何解决方案?
答案 0 :(得分:3)
您收到此错误:
undefined method `content_type' for nil:NilClass (NoMethodError)
因为MIME::Types.type_for("http://web.com/img/12457634").first
对象有时是nil
。
要避免此问题,请执行以下操作:
MIME::Types.type_for("http://web.com/img/12457634").first.try(:content_type)
因此,如果程序为nil
,则不会导致程序崩溃。如果不是nil
,则会得到正确的content_type
或者,要使用Content-Type
检查图像的Net::HTTP
标题,您可以编写如下方法:
def valid_image_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