CakePHP3で画像をアップロードする際に一時ファイルなどの情報の場所
開発環境は、Windows 10 Pro(64bit) + PHP 7.2.12 + CakePHP 3.6.13。
画像などをアップロードしても、CakePHPでは、規約により$_FILESを使うことができない。その対策として、代替の方法を書いておきます。
<?php // 主にコントローラ内にてPOSTメソッドを受け取ったら $img = $this->request->getData("fileのname属性名"); echo $img['size']; // ファイルサイズ echo $img['type']; // ファイルの形式 echo $img['tmp_name']; // 一時ファイルの絶対パス echo $img['name']; // 画像のファイル名 echo $img['error']; // エラーメッセージ ?>
で、name,tmp_name,size,error,typeが連想配列の形式で取得できる。
画像を複数枚アップロードしたい場合
formタグ内にて、
<input type="file" name="file[0]"> <input type="file" name="file[1]"> <input type="file" name="file[2]">
みたいに指定して、
アクション側では、
<?php for($i = 0; $i < 3; $i++){ $img = $this->request->getData("file")[$i]; } ?>
という風にする。連番にした方が、アクション側はfor文を使って、少ないコードでかけるので便利。
参考リンク
CakePHP画像をアップロードする - Qiita
・ここに書いてあることじゃ、情報が古いのかできず、自分で方法を見つけました。