Paperclip автоматически очищает имена файлов? - PullRequest
12 голосов
/ 07 сентября 2011

Я использую скрепку Thoughtbot для загрузки файлов.

Я обнаружил, что при загрузке файла с пробелами в имени файла он сохраняется с пробелами, замененными подчеркиванием.

Это хорошо.

Я также попытался загрузить файл со специальными символами, такими как ~ и т. Д., И все они были заменены подчеркиванием.

Отлично. Именно то, что я хочу.

Но почему это происходит?

Все, что я делаю в своей модели, это ...

has_attached_file(
    file_somefile,
    :path => ":rails_root/public/system/other/path/elements/:basename.:extension"
)

Это поведение Paperclip по умолчанию?

Ответы [ 2 ]

13 голосов
/ 09 ноября 2012

Чтобы добавить немного больше информации, это происходит в Paperclip :: Attachment # cleanup_filename , в котором по умолчанию limited_characters / [& $ +, /:; =? @ <> [] {} \ |\\ ^ ~% #] / заменяются символами подчеркивания.

Это не задокументировано, но вы можете указать параметр: limited_characters для скрепки, чтобы изменить заменяемое, например,

class User < ActiveRecord::Base
  attr_accessible :avatar
  has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@'
end
6 голосов
/ 08 сентября 2011

ОК, после небольшого поиска я нашел этот пост , в котором внизу говорится, что Paperclip фактически выполняет минимальную обработку имен файлов.

...