PHPで特定のファイルをアップロードする関数!
PHPで指定したファイルのアップロードのみを許可してアップロードする関数は以下のように実現できます。
/*************************************************** * 特定ファイルのみアップロードする * 引数: * 1.<input type="file"/>でアップロードしたデータ * 2.アップロード後のファイルにつける名前 * 3.アップロード先のディレクトリ名(最後に/をつける必要なし) * 4.アップロードを許可したい拡張子の配列 array("jpeg","jpg","png","gif") * 戻り値:成功した場合はアップロード後のファイル名(保存されたファイル名) * 失敗した場合にはfalse ***************************************************/ public function upload_sp_files($data,$name,$dir,$extention_array){ if(!empty($data["tmp_name"]) && $data["size"]>0){ $name_array = explode(".",$data["name"]); $extention = $name_array[count($name_array)-1]; if(in_array($extention, $extention_array)){ $new_name = $name.".".$extention; $file_path = $dir."/".$new_name; if(move_uploaded_file($data["tmp_name"],$file_path)){ return $new_name; }else{ return false; } }else{ return false; } }else{ return false; } }
cakePHPでこれを使用する場合はcomponentに定義しておいてから使用するのが良いと思います。
cakePHPでの使用例は以下です。
DataComponent.phpに定義してあると仮定して、
$data = $this->data; $date = date("YmdHis"); $img_name = $date."_img_name"; $img_chk = $this->Data->upload_sp_files($data["img_name"],img_name,"../webroot/img",array("jpeg","jpg","png","gif"));
upload_sp_files()の第4引数は配列で許可したいファイルの拡張子を指定することに注意してください。
$_FILES["●●"]["type"]でのファイル形式の分岐を行っていない分セキュリティは下がりますが簡単なアップロードシステムを作成する場合には特に問題はないでしょう。
upload_sp_files()の返り値はアップロードされたファイル名になりますので、返り値を変数で取得し、DBに保存することも簡単です。