質問: **CakePHP2.3で画像ファイルアップロードするにはどうすればいいですか?** プラグインを色々試してみましたが、バージョン2.3に対応していないため、異なったエラーが返ってくるだけでした。 ファイルタイプを確認して、copy()関数で違うディレクトリに移すくらいで大丈夫ですか? 誰か教えてくださいー!
回答: まずviewです。 ``` Form->create('Post', array('type'=>'file', 'enctype' => 'multipart/form-data')); echo $this->Form->input('Post.image', array('label' => false, 'type' => 'file', 'multiple')); echo $this->Form->submit('登録する', array('name' => 'submit')); echo $this->Form->end(); ?> ``` モデル ``` public $validate = array( 'image'=>array( 'extension' => array( //ここの拡張子だけ受け付ける 'rule' => array('extension',array('jpg','jpeg','gif','png')), 'message' => array( '画像ではありません'), 'allowEmpty' => true, ), 'mimetype' => array( 'rule' => array( 'mimeType', array( 'image/jpeg', 'image/png', 'image/gif') // MIMEタイプを配列で定義 ), 'message' => array( 'MIME type エラー') ), 'size' => array( 'maxFileSize' => array( 'rule' => array( 'fileSize', '<=', '10MB'), 'message' => array( 'ファイルサイズがオーバーしています') ), 'minFileSize' => array( 'rule' => array( 'fileSize', '>', 0), 'message' => array( ファイルサイズが足りていません') ), ), ), ); ``` viewのフォームに入力されたファイルが、画像ファイルかどうかモデルでバリデーションをかけます。 **大事なのはバリデーションです。画像ファイルに装ってウイルスを含まれるかもしれないので、しっかりフィルターをかけましょう。** その後はコントローラーでDBに入れるのか、ファイルとしておくのか書くだけです。 **ただ、気をつけるのが他のユーザーに見られない場所におきましょうね。** がんばってください!