Paperclip中的扩展名验证 - Ruby on Rails

9

我发现Paperclip可以验证文件的内容类型,例如image/jpeg,但是我想特别验证文件扩展名。这是因为我正在使用一个不常见的扩展名,无法得到一致的内容类型。有人知道如何做到这一点,或者有什么好方法吗?

1个回答

16

猜想,没有必要使用paperclip的方法进行验证。您可以使用类似以下的内容:

has_attached_file :attachment
validates_format_of :attachment_file_name, :with => %r{\.(docx|doc|pdf)$}i

编辑:

或者,使用纸夹验证它:

validates_attachment_content_type :attachment, :content_type => 'text/plain'

^它将自动生成内容类型不匹配错误。


3
谢谢,这行得通。简单的跟进问题:如何自定义错误消息?这似乎行不通:validates_format_of :attachment_file_name, :with => %r{.(txt)$}i, :message => "Can only upload .txt files." - Geoff
很奇怪!但是无论如何,请检查编辑以获取备选解决方案。 - abm
这里的第二个选择可能也会接受具有 MIME 类型 "text/plain" 的其他文件扩展名的文件。可以在 http://reference.sitepoint.com/html/mime-types-full 上找到许多此类文件扩展名。 - lossius
1
可以被欺骗。除了匹配文件名之外,确保以合法的方式进行验证。 - JackHasaKeyboard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接