使用Carrierwave验证上传大小

时间:2011-01-20 21:54:13

标签: ruby-on-rails carrierwave

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

提前致谢!

4 个答案:

答案 0 :(得分:20)

答案 1 :(得分:5)

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

答案 2 :(得分:4)

由于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

答案 3 :(得分:-1)

我提出的

Here is the solution - 诀窍在于我无法直接检查文件大小,因为如果文件尚未上传,则会生成Fog RubyGem炸弹。我希望有一种更清晰的方式来询问CarrierWave是否上传了文件。