In my model:
has_attached_file :uploaded_file,
:url => "/policy_documents/get/:id",
:path => "/public/policy_documents/:id/:basename.:extension"
validates_attachment_size :uploaded_file, :less_than => 10.megabytes
validates_attachment_presence :uploaded_file
validates_attachment_content_type :uploaded_file, :content_type =>['application/pdf', 'application/xlsx'],
:message => ', Only PDF, EXCEL, WORD or TEXT files are allowed. '
And after this, it can upload only PDF documents, not excel or word or text docs. Please help me where I am missing!
I don't know if you have solved this for yourself but you are missing MIME types for the documents you want to handle try changing :content_type
to:
:content_type => ["application/pdf","application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"text/plain"]
Or use a custom validation
validate :correct_content_type, :message => ", Only PDF, EXCEL, WORD or TEXT files are allowed."
def correct_content_type
acceptable_types = ["application/pdf","application/vnd.ms-excel",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/msword",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"text/plain"]
acceptable_types.include? uploaded_file.content_type.chomp
end
This is actually dependent on your servers 'file' command. What that command returns to you is what you need to be accepting in the paperclip validations.
For example my Debian server returns "application/msword" for an xls file. And for an xlsx file it gives "application/zip".
I currently have these to accept xls and xlsx files.
validates_attachment_content_type :file, :content_type => %w(application/zip application/msword application/vnd.ms-office application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With