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にしときます。