Validate extension in Paperclip - Ruby on Rails
Asked Answered
M

1

9

I've found that Paperclip can validate file content type, i.e. image/jpeg, but I want to specifically validate the extension. This is because I'm working with an obscure extension that won't get a consistent content type. Anyone know if this is doable, or a good way to do this?

Marvismarwin answered 2/7, 2011 at 3:33 Comment(0)
P
16

Guess, there is no need to validate it with paperclip's method. You can rather use something like:

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

Edit:

Alternatively, to validate it with paperclip:

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

^ it will generate content-type mismatch errors automatically.

Prudence answered 2/7, 2011 at 3:41 Comment(4)
Thanks, this worked. Simple follow-up: how can you customize the error message? This doesn't seem to work: validates_format_of :attachment_file_name, :with => %r{\.(txt)$}i, :message => "Can only upload .txt files."Marvismarwin
That's weird! but anyway check the edit for alternate solution.Prudence
The second alternative here will probably also accept files with other file endings that have MIME type "text/plain". A number of such file endings can be found e.g. at http://reference.sitepoint.com/html/mime-types-full.Toulon
That can be spoofed. Make sure to validate it a legitimate way besides matching the file name as well.Jacobs

© 2022 - 2024 — McMap. All rights reserved.