Скрепка не будет отображать / определять размер файла чего-либо, кроме изображения - PullRequest
0 голосов
/ 27 августа 2011

Я работаю над приложением, которое позволяет пользователям загружать видео, изображения, аудиоклипы и документы.Файлы загружаются с гемом Paperclip и сохраняются на s3.

Сейчас я выполняю некоторую обработку по размерам файлов после их загрузки, но paperclip продолжает сохранять файл в базе данных с файломразмер '0' для любого файла, который не .jpg, .gif, .png.Я сам пытался проверить размер файла, длину загрузки и несколько других идей.

В любом случае можно ли сделать monkeypatch или перехватить запрос от paperclip, чтобы узнать, какой размер файла?Кто-нибудь сталкивался с этим вопросом раньше?

1 Ответ

1 голос
/ 27 августа 2011

По умолчанию Paperclip создан для обработки изображений.Если вам нужно иметь возможность обрабатывать файлы других типов, вам нужно будет написать свой собственный Процессор: https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/processor.rb. Это позволит вам обрабатывать файлы любым способом, который вам необходим при объявлении в вашей модели:

has_attached_file :scan, :styles => { :text => { :quality => :better } },
                  :processors => [:ocr]

Вот важный момент из документов README:

ПРИМЕЧАНИЕ. Поскольку процессоры работают, превращая исходное вложение в стили, процессоры не будут запускаться, если не определены стили.

Это означает, что вам нужно указать какой-то styles, чтобы ваш процессор или любой другой процессор заработал.Для базового пользовательского процессора достаточно простого :styles => { :default => true }.

...