我已经写了一个自定义验证来检查文件扩展名,使用carrierwave(我知道这不会阻止文件被伪造),但知道它就足够了。验证文件扩展名 - Rails 4
不过,我不认为我已经完全得到它虽然,或至少我认为这可以优化
class Document < ActiveRecord::Base
validate :file_format, :if => 'media?'
def file_format
filename = self.media.filename
if filename !~ /.(png|PNG|jpg|JPG|jpeg|JPEG|mp4|MP4|docx|DOCX|pdf|PDF)/
errors[:document] << "File format not supported"
end
end
end
可能正则表达式考虑到不区分大小写(使用i
我相信吗?)
当我上传文件现在要求只是挂起,不过当我重新加载页面的文件是存在的......我觉得这是一个问题,我的验证方法
任何提示或帮助表示赞赏
谢谢
不确定,但我相信'媒体?'价值,如果应该是一个符号!虽然可能不相关。 – Mohamad
以及我认为它确定,适用于我使用“媒体”设置的其他验证?它从docs..besides已经尝试符号和相同的行为 – Richlewis
你需要逃避的时期。否则它匹配任何字符。我会用,'! filename.match(/ \。(png | jpg | jpeg | mp4 | docx | pdf)$/i)' – lurker