2011-09-07 13 views
10

私はThoughtbotのPaperclip gemを使ってファイルのアップロードを処理しています。Paperclipは自動的にファイル名をクリーンアップしますか?

ファイル名にスペースを含むファイルをアップロードすると、スペースがアンダースコアに置き換えられて保存されることがわかりました。

これはいいですね。

~などの特殊文字を含むファイルをアップロードしようとしましたが、すべてがアンダースコアに置き換えられました。

素晴らしい。まさに私が欲しいもの。

しかし、なぜそれが起こっていますか?

私は私のモデルでやっているすべては...

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

は、このペーパークリップのデフォルトの動作ですか?

+0

どのようなOSですか? OS Xでは、元のスペースとチルダを使ってファイル名を取得します。 –

+0

OS X、Paperclip 2.3.1.1 – Ethan

+0

Hmmを使用しています。私は明示的に私はこれに対して、私は何もしていない以外のこれに対してテストしたアプリのパスを設定していません。現時点で私のバージョンを確認することはできませんが、Gemfileでバージョンを指定していないので、おそらく2.4.1ishです。 –

答えて

6

もう少し調べてみると、Paperclipが実際にはファイル名の最小限の処理を行っていることがわかったthis blog postが見つかりました。

11

少しより多くの情報を追加するには、これはデフォルトのrestricted_characters /するPaperclip::Attachment#cleanup_filenameで起こる[& $ +、/:;?= @ <> [] {} \ | \\ ^〜%の#] /が置き換えられますアンダースコア付き。

文書化されていませんが、paperclipに:restricted_charactersオプションを指定して、置き換えられるものを変更することができます。

class User < ActiveRecord::Base 
    attr_accessible :avatar 
    has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@' 
end 
+0

[Paperclip :: Attachment#cleanup_filename](https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/attachment.rb#L605)へのリンクを更新してください。 – nnattawat

関連する問題