我正在使用Thoughtbot的Paperclip gem来处理文件上传。
我发现当我上传文件名中包含空格的文件时,它会被替换为下划线的空格存储。
那很好。
我还尝试上传一个包含~
等特殊字符的文件,然后将它们全部替换为下划线。
大。正是我想要的。
但为什么会这样呢?
我在模特中所做的一切都是......
has_attached_file(
file_somefile,
:path => ":rails_root/public/system/other/path/elements/:basename.:extension"
)
这是Paperclip的默认行为吗?
答案 0 :(得分:13)
要添加更多信息,会在Paperclip::Attachment#cleanup_filename中发生,其中默认的restricted_characters / [& $ +,/:; =?@<> [] {} \ | \\ ^〜 %#] /被替换为下划线。
没有记录,但您可以指定paperclip的:restricted_characters选项来更改被替换的内容,例如。
class User < ActiveRecord::Base
attr_accessible :avatar
has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@'
end
答案 1 :(得分:6)
好的,经过一番搜索,我发现this blog post在底部说,Paperclip实际上对文件名进行了一些最小的处理。