1,判斷文件是否爲空 empty($_FILES[表單名][name])php
2,判斷文件上傳是否成功 $_FILES[表單名][error]數組
3,判斷文件上傳類型$_FILES[表單名][type]函數
4,判斷文件是否是上傳文件,is_uploaded_filecode
5,移動上傳的文件,move_uploaded_fileorm
6,若是寫成方法,須要返回文件路徑文件上傳
多文件上傳string
1,過濾空值array_filter()it
2,循環上傳io
/** * 文件上傳處理函數 * @param array $upfile 上傳文件信息數組,如:$_FILES['pic']; * @param string $path 上傳文件的存儲目錄路徑 * @param array $typelist 容許上傳的文件類型,默認爲array()則表示不限制類型 * 如:array("image/jpeg","image/gif","image/png"); //定義容許的上傳文件類型 * @param int $maxsize 容許上傳文件的大小,默認爲0表示不限制。 * @return array 返回值爲兩個單元的數組, * 第一個單元下標爲error:true表示成功,false表示失敗 * 第二個單元下標爲info:上傳成功表示文件名,上傳失敗表示失敗緣由 */ function uploadFile($upfile,$path,$typelist=array(),$maxsize=0){ //1.定義一些變量: $path=$path.'/'.date('Ymd').'/'; if(!is_dir($path)){ mkdir($path,0777,true); } $path=rtrim($path,"/")."/"; //處理一下上傳目錄 $res=array("error"=>false,"info"=>""); //定義返回值 //2.判斷上傳文件錯誤 if($upfile['error']>0){ switch($upfile['error']){ case 1: $info="上傳文件大小超過了php.ini中配置"; break; case 2: $info="上傳文件大小超過form表單中MAX_FILE_SIZE的設置"; break; case 3: $info="文件只有部分被上傳"; break; case 4: $info="沒有文件被上傳"; break; case 6: $info="找不到臨時文件夾"; break; case 7: $info="文件寫入失敗"; break; default: $info="未知錯誤!"; break; } $res['info']=$info; return $res; } //3.判斷上傳文件類型 if(count($typelist)>0 && !in_array($upfile['type'],$typelist)){ $res['info']="上傳文件類型錯誤!當前文件類型:".$upfile['type']; return $res; } //4.判斷上傳文件大小 if($maxsize>0 && $upfile['size']>$maxsize){ $res['info']="上傳文件大小超出{$maxsize}"; return $res; } //5.上傳文件的名稱處理(防止名字重複) $ext = pathinfo($upfile['name'],PATHINFO_EXTENSION);//獲取文件的後綴名 do{ $newfile = time().rand(1000,9999).".".$ext; //隨機一個文件名 }while(file_exists($path.$newfile)); //判斷是否存在 //6.執行文件上傳。 //判斷臨時目錄的的文件是不是有效的上傳文件 if(is_uploaded_file($upfile['tmp_name'])){ // 這個就相似於copy函數 if(move_uploaded_file($upfile['tmp_name'],$path.$newfile)){ $res['error']=true; $res['info']=$newfile; }else{ $res['info']="移動上傳文件錯誤!"; } }else{ $res['info']="不是有效的上傳文件!"; } return $res; }
文件上傳方法function
$arr=uploadFile($_FILES['file'],'./upload'); var_dump($arr);
上傳方法調用
調用成功後,會在upload文件夾下建立以年月日爲目錄名的文件夾,並將文件進行上傳