file_field_tag: загружать только zip-файл меньше определенного размера - RAILS

Я хочу загружать только zip-файлы размером менее 100 МБ. Следуя некоторым ресурсам, я упомянул size 1, но я не уверен, что это 1 МБ, 1 ГБ или что именно? И я все еще могу загружать zip-файлы любого размера.

= file_field_tag 'photos_zip_file', accept: '.zip', size: 1

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


person Usman Asif    schedule 19.08.2019    source источник
comment
Вы используете CarrierWave для загрузки или ActiveStorage или что-то еще?   -  person morissetcl    schedule 19.08.2019
comment
Использование CarrierWave   -  person Usman Asif    schedule 19.08.2019
comment
проверьте этот ответ для проверки на стороне клиента html5" title="можно ли проверить размер и тип входного файла в html5">stackoverflow.com/questions/8212041/   -  person PGill    schedule 20.08.2019


Ответы (2)


Поскольку вы используете CarrierWave, я предлагаю добавить сервер проверки.

Итак, в вашей модели добавьте:

validate :size_validation

private

def size_validation
  errors[:photo_zip_file] << "should be less than 100MB" if photo_zip_file.size > 100.megabytes
end

Надеюсь, это поможет.

person morissetcl    schedule 19.08.2019

Посмотрите вики Carrierwave:

def size_range
  1..100.megabytes
end

Или используйте валидатор файлов

validates :photos_zip_file, file_size: { less_than: 100.megabytes }, file_content_type: { allow: 'application/zip' }
person mechnicov    schedule 19.08.2019