2015-09-08 2 views
2

Я использую gem nokogiri для скрапа img tag src значения. некоторое время некоторое время url не показывает имя файла изображения с расширением.Rails -nokogiri GEM: Detect MIME тип изображения в URL-адресе

поэтому я пытаюсь обнаружить изображение MIME type.

для этого я попытался

MIME::Types.type_for("http://web.com/img/12457634").first.content_type # => "image/gif" 

и показать ошибку:

undefined method `content_type' for nil:NilClass (NoMethodError) 

любое решение?

+1

да это работает очень хорошо. –

+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