在我们最新的应用程序中,我们需要处理一些上传,我之前使用过回形针,一切正常!但是我们正在尝试carrierwave,它看起来很有希望但是,我找不到如何验证附件的大小,似乎文档没有任何关于它的信息,我们是否应该手动将其添加到模型中通过自定义验证器?
提前致谢!
在我们最新的应用程序中,我们需要处理一些上传,我之前使用过回形针,一切正常!但是我们正在尝试carrierwave,它看起来很有希望但是,我找不到如何验证附件的大小,似乎文档没有任何关于它的信息,我们是否应该手动将其添加到模型中通过自定义验证器?
提前致谢!
github上有一个Wiki条目:https ://github.com/jnicklas/carrierwave/wiki/How-to%3A-Validate-attachment-file-size
我制作了一个 Active Model File Validators gem,用于检查 Carrierwave、PaperClip、Drangonfly、Refile 的内容类型和文件大小验证(希望它可以与其他上传解决方案一起使用)。它根据文件的内容检测内容类型,并且它有一个媒体类型欺骗检测器。它在上传之前和之后都有效。
由于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
这是我想出的解决方案 - 诀窍是我无法直接检查文件大小,因为如果文件尚未上传,这会导致 Fog RubyGem 炸弹。我希望有一种更简洁的方式来询问 CarrierWave 是否上传了文件。