在我的表格中我有
<%= label_tag("file", "Attachment:") %><%= file_field_tag "uploadfile" %>
在我的模型中,我想写这个
validate :validates_uploadfile
def validates_uploadfile(file)
max_size = 2048
errors.add(:uploadfile, "File size exceeds limitation") if file.size > max_size
end
在我的控制器中,我可以拨打这样的内容
validates_upload_file(params[:uploadfile])
有没有办法在上传前验证文件上传(不是使用javascript或查看文件扩展名)
谢谢你的帮助
UPD
validate :uploadfile_validation, :if => "uploadfile?"
def uploadfile_validation
errors[:uploadfile] << "should be less than 1MB" if uploadfile.size > 1.megabytes
end
答案 0 :(得分:16)
这是我的尺码验证代码(我使用CarrierWave进行上传)。
validate :picture_size_validation, :if => "picture?"
def picture_size_validation
errors[:picture] << "should be less than 1MB" if picture.size > 1.megabytes
end
干杯。
答案 1 :(得分:8)
您可以使用:
validates_size_of :picture, maximum: 1.megabytes, message: "should be less than 1MB"
答案 2 :(得分:2)
如果我没有弄错,那么上面的所有方法一旦上传(甚至可能处理)就检查文件大小但是如果我在文件输入字段中选择1GB文件来考虑没有javascript验证或者javascript刚刚禁用?它可能上传,花了很多时间告诉你它太大了,那只是正确的。我是新手,所以我可能错了什么......