Cakephpでmediapluginをつかうとき〜。

最近ぱったりブログの更新が止まってしまいました。

新年の抱負からはや4ヶ月。

もう半年が近づいてます。

さて、またまた知り合いのサイトを手がけることになったわけですが、いつものようにcakephpでmediapluginを使わせてもらいました。。

で、mediapluginを使ってアップロードだけをしたい場合。サムネイルはつくる必要がない場合には


class Example extends AppModel {
var $name = 'Pickup';
var $order ='Pickup.id DESC';

var $actsAs = array(
'Media.Transfer',
'Media.Coupler'
);
function transferTo($via, $from) {
extract($from);
$irregular = array(
'image' => 'img',
'text' => 'txt'
);
$name = Mime_Type::guessName($mimeType ? $mimeType : $file);
if (isset($irregular[$name])) {
$short = $irregular[$name];
} else {
$short = substr($name, 0, 3);
}
$path = $short . DS.date('Y').DS.date('m').DS;
$path .= String::uuid();
//$path .= strtolower(Inflector::slug($filename));
$path .= !empty($extension) ? '.' . strtolower($extension) : null;
return $path;
}

var $validate = array(
/*
'url' => array(
'notempty' => array(
'rule' => array('notempty'),
//'message' => 'Your custom message here',
//'allowEmpty' => false,
//'required' => false,
//'last' => false, // Stop validation after this rule
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
*
*/
'file' => array(
'resource' => array('rule' => 'checkResource'),
'access' => array('rule' => 'checkAccess'),
'location' => array('rule' => array('checkLocation', array(
MEDIA_TRANSFER, '/tmp/'
))),
'permission' => array('rule' => array('checkPermission', '*')),
'size' => array('rule' => array('checkSize', '5M')),
'pixels' => array('rule' => array('checkPixels', '1600x1600')),
'extension' => array('rule' => array('checkExtension', false, array(
'jpg', 'jpeg', 'png', 'tif', 'tiff', 'gif', 'pdf', 'tmp'
))),
'mimeType' => array('rule' => array('checkMimeType', false, array(
'image/jpeg', 'image/png', 'image/tiff', 'image/gif', 'application/pdf'
)))),
'alternative' => array(
'rule' => 'checkRepresent',
'on' => 'create',
'required' => false,
'allowEmpty' => true,
)
);
}

と'Media.Transfer','Media.Coupler'だけ定義すればいいようです。
そのときexampleモデルには、
dirnameとbasenameのカラムを持たせておけば、mediaヘルパーで簡単に画像を表示できます。
このあたりを保存してくれるのがCouplerなんですね。
TransferはそのなのとおりアップロードしてくれますがDB保存は自分でしないとですね。
いやぁ〜便利です。。。。。。