cakePHPでファイルアップロード
cakePHPでのCMSネタの続きだが、CMSツールの一つとして、ブラウザからサーバ上のファイル管理(画像とか)機能が必要になる。「ブラウザからファイルをアップロードできて、登録内容を一覧で表示できて、削除とかも出来る」という機能が必要になるわけだが、調べてみてcakePHP用のコンポーネントを公開していらっしゃる方がいた。
メニューのinfoからFileHandlerを選択。ここで提供されるコンポーネントを使用すれば、簡単にファイルのアップロードが可能になる(一覧表示や削除は自前で実装する)。
ただしこのコンポーネントで使用するテーブルのカラム名が少し気に入らない。file_name、mime_type、file_size、extra_fieldというような、アンダーバー入りのカラム名がやだ。ということで、これをname、mimetype、size、extraと名前を変えることにした。
当然カラム名を変えるだけではダメで、スクリプト側での修正も必要だ。修正した箇所はコンポーネントfile_handler.phpの以下の部分。
・64行目付近($_dbFieldsの記述)
ここのキーの部分をカラム名にあわせて変更
・392行目付近($this->_dbFieldsの記述)
ここのキーの部分をカラム名にあわせて変更
これで大丈夫っぽい(サンプルのコントローラでも一部記述の修正が必要)。
このコンポーネント、ちゃんとモデル、コントローラ、ビューのサンプルコードも用意されているので、非常にわかりやすい!。
アップロードのアクション(add)はこれで出来たわけだから、あとはbakeして、Pager組み込めば、画像管理機能の出来上がりだ。
ん〜、ナイスコンポーネント。