忍び歩く男 - SLYWALKER

大阪のこっそりPHPer

CakePHP1.2.3 MediaPluginをつかってみた その2

CakePHP1.2.3 MediaPluginをつかってみたの続編

結構環境によってハマリどころが多いのでメモ
あと、プラグインのアップデートで動かなくなってしまったとこもあるので注意

Model Attachment

これがデフォルトのvalidateの設定

<?php
class Attachment extends MediaAppModel {
	var $validate = array(
		'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,
		));
}
?>

ここで注意しないといけないのは2点

  • location
  • mimeType
location
'location'   => array('rule' => array('checkLocation', array(
	MEDIA_TRANSFER, '/tmp/'
))),

ruleの第2引数はallowディレクトリです。
ここには、upload_tmp_dirも含まれる必要があります。
見ての通り、Windows環境ではこのvalidationに引っかかりまくります。
第2引数をtrueにするとすべて許可状態になります。

mimeType
'mimeType'   => array('rule' => array('checkMimeType', false, array(
	'image/jpeg', 'image/png', 'image/tiff', 'image/gif', 'application/pdf'
)))),

ruleの第2引数はdeny、第3引数はallowです。
image/jpegをuploadしたのに引っかかってしまいます。
(testでも失敗になってたので、そのうち修正が入るでしょうが…)
とりあえず第3引数をtrueにしときます。