проверить размер загрузки с помощью CarrierWave
-
13-10-2019 - |
Вопрос
В нашем последнем приложении нам нужно обработать некоторые загрузки, я работал с PaperClip раньше, и все работает! Но мы даем Carrierwave Попробуй, это выглядит многообещающе, но я не могу найти Как проверить размер привязанности, кажется, что документация Нет информации об этом, должны ли мы добавить ее вручную в модель через пользовательский валидатор?
Заранее спасибо!
Решение
На GitHub есть запись вики: https://github.com/jnicklas/carrierwave/wiki/how-to%3A-validate-attachment-file-size
Другие советы
Я сделал активную модель Файловые валидаторы GEM, который проверяет тип контента и проверку размера файла для CarrierWave, PaperClip, Drangonfly, Refil (надеюсь, он будет работать с другими решениями для загрузки). Он обнаруживает тип контента на основе содержимого файла и имеет детектор Spoof Type Media. Это работает как до, так и после загрузки.
С 1.0
Версия CarrierWave имеет встроенную проверку размера файла.
Установите последний carrierwave
жемчужина
gem 'carrierwave', '~> 1.0'
Добавить метод size_range
обеспечить мин размер и максимальный размер
class ImageUploader < CarrierWave::Uploader::Base
def size_range
0..2.megabytes
end
В модели добавить validates_integrity_of
Для действий размера файла (и типа контента) изображения.
class Image < ApplicationRecord
mount_uploader :image, ImageUploader
validates_integrity_of :image
Вот решение То, что я придумал - хитрость заключалась в том, что я не мог проверить размер файла напрямую, так как это сделало бомбу Fog Rubygem, если файл не был загружен. Я ожидаю, что будет более чистый способ спросить CarrierWave, был ли загружен файл.