Ruby on Rails: Как Вы проверяете, является ли файл изображением?

Как Вы проверили бы, является ли файл изображением? Я думаю, что Вы могли использовать метод как так:

def image?(file)
  file.to_s.include?(".gif") or file.to_s.include?(".png") or file.to_s.include?(".jpg")
end

Но это могло бы быть немного неэффективно и не корректно. Какие-либо идеи?

(Я использую плагин скрепки, btw, но я не вижу методов, чтобы определить, является ли файл изображением в скрепке),

17
задан sjsc 8 February 2010 в 19:45
поделиться

3 ответа

Я бы использовал гем ruby-filemagic , который является связыванием Ruby для libmagic .

15
ответ дан 30 November 2019 в 10:53
поделиться

imagemagick имеет команду под названием identity, которая обрабатывает это - проверьте в документации по скрепке - возможно, есть способ обработать это из вашего приложения RoR.

1
ответ дан 30 November 2019 в 10:53
поделиться

Поскольку вы используете скрепку, вы можете использовать встроенный метод validates_attachment_content_type в модели, где используется has_attached_file, и указать, какие типы файлов вы хотите позволить.

Вот пример из приложения, в котором пользователи загружают аватар для своего профиля:

has_attached_file :avatar, 
                  :styles => { :thumb => "48x48#" },
                  :default_url => "/images/avatars/missing_avatar.png",
                  :default_style => :thumb

validates_attachment_content_type :avatar, :content_type => ["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"]

Документация находится здесь http://dev.oughttbot.com/paperclip/classes/Paperclip/ClassMethods.html

7
ответ дан 30 November 2019 в 10:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: