如何在上传之前验证文件的文件大小?

时间:2014-07-31 21:11:41

标签: ruby-on-rails validation ruby-on-rails-4 carrierwave filesize

我正在使用Carrierwave来处理我的文件上传,现在我想添加验证,以便用户无法上传1GB或类似的文件。

现在我这样做了:

class Item < ActiveRecord::Base
    mount_uploader :image, ImageUploader
    validate :file_size

    def file_size
        errors[:image] << "too big" if self.image.parametres[:size] > 100000
    end
end

问题是我觉得这个验证在文件处理完毕后才有效。我想上传30MB网站的大文件后卡住几分钟然后它通知我文件太大了。在我看来文件上传缓存然后验证运行。这是不可接受的。

还有其他方法可以运行验证吗?谢谢!

2 个答案:

答案 0 :(得分:1)

最简单的方法是在文件传输发生之前编写一些JS来验证文件大小的客户端。

答案 1 :(得分:-1)

您可以使用paperclip gem,它将为尺寸,类型和格式提供可自定义的验证。