16

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

提前致谢!

4

4 回答 4

20

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

于 2011-06-09T09:05:16.413 回答
5

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

于 2014-12-11T22:35:39.787 回答
5

由于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
于 2017-01-13T11:27:20.057 回答
-1

这是我想出的解决方案 - 诀窍是我无法直接检查文件大小,因为如果文件尚未上传,这会导致 Fog RubyGem 炸弹。我希望有一种更简洁的方式来询问 CarrierWave 是否上传了文件。

于 2014-03-07T09:25:09.733 回答