I'm using Thoughtbot's Paperclip gem to handle file uploads.
I'm finding that when I upload a file with spaces in the filename, it gets stored with the spaces replaced with underscores.
That's good.
I also tried uploading a file with special characters like ~
and so on and they all got replaced with underscores.
Great. Exactly what I want.
But why is it happening?
All I'm doing in my model is...
has_attached_file(
file_somefile,
:path => ":rails_root/public/system/other/path/elements/:basename.:extension"
)
Is this Paperclip's default behavior?
To add a little more information, this happens in Paperclip::Attachment#cleanup_filename in which the default restricted_characters /[&$+,/:;=?@<>[]{}\|\\^~%# ]/ are replaced with underscores.
It's not documented, but you can specify the :restricted_characters option to paperclip to change what gets replaced, e.g.
class User < ActiveRecord::Base
attr_accessible :avatar
has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@'
end
OK, after a little more searching, I found this blog post that says, down at the bottom, that Paperclip actually does some minimal processing of filenames.
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