проверить размер загрузки с помощью Carrierwave - PullRequest
15 голосов
/ 21 января 2011

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

Заранее спасибо!

Ответы [ 4 ]

20 голосов
/ 09 июня 2011
5 голосов
/ 12 декабря 2014

Я создал активную модель File Validators драгоценный камень, который проверяет тип содержимого и проверку размера файла для Carrierwave, PaperClip, Drangonfly, Refile (надеюсь, он будет работать с другими решениями для загрузки).Он обнаруживает тип содержимого на основе содержимого файла и имеет детектор поддельного типа.Работает как до, так и после загрузки.

4 голосов
/ 13 января 2017

Начиная с 1.0 версии CarrierWave имеет встроенную проверку размера файла.

Установите последнюю версию carrierwave gem

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
0 голосов
/ 07 марта 2014

Вот решение , которое я придумала - хитрость заключалась в том, что я не мог проверить размер файла напрямую, поскольку это создало бомбу Fog RubyGem, если файл не был загружен.Я ожидаю, что будет более понятный способ узнать CarrierWave, был ли загружен файл.

...