2013-03-05 5 views
2

Я работаю над рубинами на рельсах. Я пытаюсь сделать прикрепление файла (изображение/аудио/видео).Поиск типа содержимого загруженного файла в рельсах

Так у меня есть общий метод, как

byteArray = StringIO.new(File.open("path").read) 

Можно ли найти тип содержимого ByteArray, чтобы проверить загруженный файл, является ли изображение/аудио/видео/PDF в рубин.

+0

Вы используете скрепку для загрузки файлов? –

+0

@Ramiz Raja ya после того, как я установил тип содержимого для вложения, я использовал его для сохранения через скрепку. В настоящее время у меня есть 3 отдельных метода для сохранения изображений изображений, аудио и видео. Поэтому я пытаюсь обобщить его так, чтобы найти тип контента byteArray и установить тип содержимого и сохранить его в Paperclip – useranon

+2

, вы можете получить 'content type' загруженного файла как' paperclip' генерировать столбец ' _content_type' для загруженный файл. –

ответ

4

Я видел это был помечен paperclip, поэтому я дам вам, как мы делаем это с скрепку:

class Attachment < ActiveRecord::Base 

     has_attached_file :attachment, 
       styles:   lambda { |a| a.instance.is_image? ? {:small => "x200>", :medium => "x300>", :large => "x400>"} : {:thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10}, :medium => { :geometry => "300x300#", :format => 'jpg', :time => 10}}}, 
       :processors => lambda { |a| a.is_video? ? [ :ffmpeg ] : [ :thumbnail ] } 

     def is_video? 
       attachment.instance.attachment_content_type =~ %r(video) 
     end 

     def is_image? 
       attachment.instance.attachment_content_type =~ %r(image) 
     end 

end 

Если вам удалось получить файл в Скрепка, он в основном режет его на content_type уже. Это означает, что если вы используете lambda, чтобы определить, содержит ли вложение content_type image или video

Если вы дадите мне некоторую информацию о том, что вы пытаетесь достичь, я могу дать вам несколько переработан код, чтобы помочь с вашим вопросом в частности :)

Смежные вопросы