Rails -nokogiri GEM:检测 URL 中图像的 MIME 类型
Posted
技术标签:
【中文标题】Rails -nokogiri GEM:检测 URL 中图像的 MIME 类型【英文标题】:Rails -nokogiri GEM: Detect MIME type of image in URL 【发布时间】:2015-12-04 01:50:12 【问题描述】:我正在使用 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)
有什么办法吗?
【问题讨论】:
是的,效果很好。 太棒了 :) 很高兴听到这个消息 :) 【参考方案1】:你得到这个错误:
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
或者,要使用Net::HTTP
检查图像的Content-Type
标头,您可以编写如下方法:
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
【讨论】:
以上是关于Rails -nokogiri GEM:检测 URL 中图像的 MIME 类型的主要内容,如果未能解决你的问题,请参考以下文章