CakePHP

複数ファイルをアップロードできるjQueryのプラグイン「Uploadify」をCakePHPで使ってみる

2015/09/10

前回に続き、ファイルをまとめてアップロードする jQuery のプラグイン「Uploadify」の使い方。
今回はCakePHPでの設置の方法を晒してみたいと思います。

「Uploadify」の設置

【設置構成】

上記構成で説明します。
前回のアップロードフォルダは「uploads」でしたが、今回は media とします。
ちなみに、 media は medium の複数形ですので、覚えておくと良いことがあるかも。

DBへの書き込みも行うので、適当にこのようなSQLでテーブル作成。

view

アップロードフォーム(/app/views/upform.ctp)

レイアウトかヘッダ辺りで jQuery と uploadify を読み込んで下さい。

controller

アップロードフォーム用アクション : upform

単に表示するだけです。

アップロード用アクション

uploadify.php を元に作成しています。

途中にあるパスはapp.php で以下のように設定しています。
PIC_PATH_MEDIA
define('PIC_PATH_MEDIA', WWW_ROOT . 'media/img/'); // WEBルートから

PIC_DIR_PATH_MEDIA
define('PIC_DIR_PATH_MEDIA', "/" . "media/img/"); // 絶対パス

PIC_WIDTH_MIDDLE
PIC_WIDTH_SMALL
PIC_WIDTH_MOBILE には、保存する画像のピクセルサイズを指定しています。

CakePHPなので、「$_POST」とか「$_FILES」を「$this->data」で受けたかったのですが、うまく取得できなかったので、「$_POST」「$_FILES」形式で取得しています。

アップロードの処理は独自で作成したコンポーネントを使用しています。
やってることは、tmpデータを指定されたファイル名でサイズそのままと、サイズを変えてコピーするだけです。
戻り値はそれぞれ、ファイルネームを返しています。
要望があればまたそちらも公開したいと思います。

戻ってきたら、DBにインサートしているだけ。その辺りは問題ないと思います。

model

Medium.php

最後にモデル。
特にアップロードに関して処理していませんので、以下のように。

と、早足ですが、とりあえずはこれで toogie の環境(ウェブサーバと Windows7 に作ったローカル環境)で走っています。
動かないって方は、まずは通常の PHP で動くかどうかを試してから、CakePHP にとりかかるのがよろしいかと思います。

ちなみにこの CakePHP 版を作るのに toogie は2日掛けてしまいました(苦笑

何かのお役に立てれば幸いです。

[tgAmazonItemLookup asin="4150309930" related="1"]

-CakePHP
-, , , , , ,