2008-07-05 (Sat) [長年日記]

画面遷移せずに画像のアップロードをするプラグイン

昇仙峡 Sho-senkyoh

RubyKaigi2008のときにいつのまにRails 2.0に対応したのかとツッコまれたので遅ればせながら紹介します。

image_uploadプラグイン

TLabというところで簡単に画面遷移せずに画像をアップロードできるようになるimage_uploadというRails用プラグインを公開しています。元々は某プロジェクト向けに私が書いた画像アップロードモジュールを、ブラッシュアップ、プラグイン化、ドキュメント整備、テストの整備、Rails 2.0対応などなど公開に必要だけれどあまりやりたくない大変で重要お仕事を嫁やラボメンのみなさまがこなして公開にこぎつけたというプラグインです。

特徴として以下があげられます。

  • responds_to_parentプラグインとJavaScriptを使って画面遷移のない画像ファイルのアップロードが簡単に出来ます
  • JavaScriptが使えない環境向けにフォームベース画面遷移を伴う画像アップロードもシームレスに扱えます
  • Scaffoldに対応して雛形を簡単に生成できます
  • RMagickをインストールすることで画像の回転など加工にも対応します
  • モデルの自由度が高く、画像を添付したいモデルとポリモーフィック関連で関連を張ります(添付したいモデルを汚染しません)
  • アップロードされる画像のマジックコードを確認して画像ファイルかチェックします
  • ファイル名をランダムに推測しにくい名前に変更します。この機能はオフにもできます
  • アップロード中の一時ファイルの情報保持にセッションを使ってます(セッションの利用に制限のあるサイトには向いてないかも)
  • Ruby-GetTextを使った多言語化(日本語化)
  • 使用例としてサンプルアプリが公開されています> http://imageupload.rubyforge.org/svn/trunk/image_examples
  • Rails 2.1でも一応動いてるっぽい?

プロジェクトの情報は以下の関連サイトで公開されています。

実際に動いている例としてBookScopeがあります。プロフィール画面のアイコン画像のアップロードに使われています。

ライセンスも自由で使いやすい修正BSDライセンス*1で公開しています。ぜひ使ってみて感想や要望などお寄せいただければと思います。

*1 商社からBSDライセンスのソフトウェアを公開したのが個人的にはエポックメイキングなこと。