unshiu

最近の更新履歴

開発ルール‎ > ‎

アップロードファイル管理ルール


ユーザもしくは管理者がメール添付や通常のブラウザでのUIによるファイルアップロード機能をつかって画像、 ファイルをシステム側にアップロードした場合の管理ルールをまとめます。


ディレクトリ

以下のディレクトにアップロードすることとします。

RAILS_ROOT/public/system/images   # 画像ファイルの類
           /files # テキストファイルの類

指定方法

それぞれ一般的な指定方法を示します。

画像の場合

file_columnを利用している場合、以下のようにアップロード先などのパスを指定できます。 なおこの設定は config/initalizers/file_column_option.rb で指定されており、各modelで宣言する必要はありません。

file_column :image, :magick => {
:versions => {
:thumb => {:size => "64x64", :format => "JPG"},
:large => {:size => "220x220", :format => "JPG"}
}
}, :web_root => AppResources['base']['file_column_image_web_root'],
:root_path => File.join(RAILS_ROOT, AppResources['base']['file_column_image_root_path'])

特別の理由がない限り、 AppResources?['base']に定義されている、file_column_image_web_rootとfile_column_image_root_pathを利用してください。

この際、画像は以下のディレクトリに保存されます。

RAILS_ROOT/system/images/file_columnを定義したモデル名/
ファイルの場合

特別な処理の必要はないため、ソースは省略します。

以下のディレクトリに保存されるようにしてください。 プラグイン名もしくは案件名を接頭詞につける以外は特別なルールはありません。

RAILS_ROOT/system/files/プラグイン名or案件名_xxxxx/

制限

不特定のユーザがアップロードする場所には必ず1ファイル容量のMaxを設定してください。 可能であればファイル種別による制限も設ける必要があります。

指定方法

サイズ指定

以下のようにvalidates指定が可能です。なおこの際指定する数値単位は「byte」です。

validates_filesize_of :image, :in => 0..1000
フォーマット指定

以下のようにvalidates指定が可能です。なおこの際指定可能なフォーマット一覧は vendor/plugins/file_column/lib/file_column.rb を参照してください。

validates_file_format_of :image :in => ["gif", "png", "jpg"]

system 以下に保存する理由

public 以下に直接ディレクトリを置き、そこに保存した場合、サーバなどにCapistranoを利用してデプロイするときに問題が発生します。

具体的にはCapistranoの仕様上、一意のディレクトリ名で一度チェックアウトし、現在の利用ディレクトリへのリンクを張りなおすということを実行するために、デプロイ以前のファイル等を参照できなくなってしまうからです。

これを避けるために、Capistranoは public/system 以下のディレクトリをデプロイによるチェックアウト処理とは別の共有ファイルとして管理する機構があるため、こちらを利用します。