Validieren Sie die Größe des Uploads mit Carrierwave
-
13-10-2019 - |
Frage
In unserer neuesten Anwendung müssen wir einige Uploads verarbeiten. Ich habe schon einmal mit Paperclip gearbeitet und alles funktioniert einfach! Aber wir geben Carrierwave Ein Versuch, es sieht vielversprechend aus, aber ich kann nicht finden So validieren Sie die Größe eines Ansatzes, es scheint das zu sein Dokumentation Sie haben keine Informationen darüber, sollten wir es dem Modell über einen benutzerdefinierten Validator manuell hinzufügen?
Danke im Voraus!
Lösung
Es gibt einen Wiki -Eintrag auf GitHub: https://github.com/jnicklas/carrierwave/wiki/how-tovor%3a-validate-attachment-file-Size
Andere Tipps
Ich habe ein aktives Modell gemacht Datei -Validatoren Edelstein, das die Validierung von Inhaltstyp und Dateigröße für Carrierwave, Paperclip, Drangonfly, Refile überprüft (hoffentlich funktioniert es mit anderen Uploading -Lösungen). Es erkennt den Inhaltstyp basierend auf dem Inhalt der Datei und verfügt über einen Parodiedetektor von Medientyp. Es funktioniert sowohl vor als auch nach dem Upload.
Seit 1.0
Version CarrierWave hat eine integrierte Validierung der Dateigröße.
Neueste installieren carrierwave
Juwel
gem 'carrierwave', '~> 1.0'
Methode hinzufügen size_range
um eine min -Größe und eine maximale Größe zu liefern
class ImageUploader < CarrierWave::Uploader::Base
def size_range
0..2.megabytes
end
Im Modell hinzufügen validates_integrity_of
So gültig eine Dateigröße (und Inhaltstyp) eines Bildes.
class Image < ApplicationRecord
mount_uploader :image, ImageUploader
validates_integrity_of :image
Hier ist die Lösung Das habe ich mir ausgedacht - der Trick war, dass ich die Dateigröße nicht direkt überprüfen konnte, da dies die Nebel -Rubygem -Bombe machte, wenn die Datei nicht hochgeladen worden war. Ich würde erwarten, dass es eine sauberere Möglichkeit gibt, Carrierwave zu fragen, ob eine Datei hochgeladen würde.