0

Я собираюсь загружать файлы в rackspace (видео, аудио и изображения) в рельсы с помощью скрепки или несущей, мне нужно знать тип файла, чтобы показать в представлении с помощью image_tag или video_tag или audio_tag, rackspace скажите мне, как файл? или мне нужно сохранить в моей базе данных? спасибоКак я могу определить тип файла в rackspace?

ответ

1

Даже если rackspace сообщит вам тип файла, вы его не хотите, так как потребуется так много времени, чтобы запускать туда-обратно с вашего сервера.

Мои приведенные ниже примеры кода предполагают несущую волну, но я уверен, что у paperclip есть аналогичные варианты. Два варианта:

  1. интерпретируют расширение файла

Что-то вроде: File.extname(user.avatar), которые вы затем должны интерпретировать, как вам нравится.

  1. Запись & интерпретировать тип мим.

carrierwave ридй объясняет, как получить carrierwave вычислить его, в первую очередь, а затем, вероятно, следует хранить его в базу данных вручную или с помощью carrierwave-meta. Тогда user.avatar.content_type будет что-то вроде image/jpeg, которое вы можете легко интерпретировать как определенный тип файла.

2

Вы можете запросить/установить тип файла, используя функцию content_type, расположенную в библиотеке ruby-cloudfiles.

Смотрите здесь: https://github.com/rackerlabs/ruby-cloudfiles/blob/master/lib/cloudfiles/storage_object.rb#L80-L82

Что-то, как это должно работать для создания объекта:

container = conn.create_container('new_container') 
obj = container.create_object('new_obj.txt') 
obj.load_from_filename('./obj.txt') 
obj.content_type = 'text/plain' 

И для получения объекта:

obj = container.object('new_obj.txt') 
puts obj.content_type # text/plain