使用Carrierwave验证上传大小

jpe*_*thy 16 ruby-on-rails carrierwave

在我们最新的应用程序中,我们需要处理一些上传,我之前使用过paperclip,一切正常!但是我们试试了载波,它看起来很有希望但是,我找不到如何验证附件的大小,似乎文档没有任何关于它的信息,我们是否应该手动将其添加到模型中通过自定义验证器?

提前致谢!

Flo*_*lov 20

github上有一个Wiki条目:https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Validate-attachment-file-size

  • 这将在文件上传后进行验证,这对于使用Amazon S3的用户来说可能是一个问题. (5认同)

Mus*_*ffa 5

我制作了一个Active Model File Validators gem,用于检查Carrierwave,PaperClip,Drangonfly,Refile的内容类型和文件大小验证(希望它可以与其他上传解决方案一起使用).它根据文件的内容检测内容类型,并且具有媒体类型欺骗检测器.它在上传之前和之后都有效.


Ale*_*jin 5

由于1.0版本 CarrierWave 具有内置文件大小验证。

安装最新的carrierwavegem

gem 'carrierwave', '~> 1.0'
Run Code Online (Sandbox Code Playgroud)

添加方法size_range以提供最小尺寸和最大尺寸

class ImageUploader < CarrierWave::Uploader::Base
  def size_range
    0..2.megabytes
  end
Run Code Online (Sandbox Code Playgroud)

在模型中添加图像validates_integrity_of的有效文件大小(和内容类型)。

class Image < ApplicationRecord
  mount_uploader :image, ImageUploader

  validates_integrity_of :image
Run Code Online (Sandbox Code Playgroud)