標籤:dna style res 命名 color 類型 pre 3.1 移動
1 <?php 2 3 /** 4 *實現檔案上傳 5 *@param array $file 上傳的檔案的五個資訊 6 *@param array $allow 允許檔案上傳的類型 7 *@param string & $error 用來記錄錯誤資訊 8 *@param string $part 檔案上傳目錄 9 *@param int $maxsize = 104857610 *@return mixed false|$nwename 失敗就返回false,成功就返回新名字11 */12 13 function upload($file,$allow,& $error,$path,$maxsize=1048576){14 //1,先判斷系統錯誤15 switch($file[‘error‘]){16 case 1 : $error = "上傳失敗,超出了檔案大小的限制!";17 return false;18 case 2 : $error = "上傳失敗,超出了瀏覽器表單允許的檔案大小!";19 return false;20 case 3 : $error = "上傳失敗,檔案上傳不完整!";21 return false;22 case 4 : $error = "上傳失敗,請先選擇要上傳的檔案!";23 return false;24 case 6 : 25 case 7 : $error = "對不起,伺服器繁忙,請稍後再試!";26 return false;27 }28 29 //2驗證邏輯錯誤--檔案大小30 if($file[‘size‘] > $maxsize){31 $error = "上傳失敗,超出了檔案大小的限制!";32 return false;33 }34 35 //檔案類型36 if(!in_array($file[‘type‘],$allow)){37 $error = "上傳檔案類型不正確,允許的類型有:" . implode(‘,‘,$allow);38 return false;39 }40 //3,移動臨時檔案41 //3.1得到檔案的新名字42 $newname = randName($file[‘name‘]);43 //3.2 確定檔案儲存體路徑44 $target = $path . ‘/‘ . $newname;45 //3.3 開始移動46 $result = move_uploaded_file($file[‘tmp_name‘],$target);47 if($result){48 //上傳成功49 return $newname;50 }else{51 //上傳失敗52 $error = "發生未知錯誤,上傳失敗!";53 return false;54 }55 }56 57 /**58 *產生一個隨機名字的函數 = 目前時間戳 + 隨機產生的字元59 *@param string $filename 檔案原始的名字60 *@return string $newname 檔案的新名字61 *62 */63 64 function randName($filename){65 //1,組建檔案名的時間戳記部分66 $newname = date("YmdHis");67 //2,加上隨機的幾位元字68 $str = "1234567890";69 for($i=0;$i<6;$i++){70 $newname .= $str[mt_rand(0,strlen($str)-1)];71 }72 //3,加上檔案的尾碼名73 $newname .= strrchr($filename,‘.‘);74 return $newname;75 }
封裝一個檔案上傳並檢測安全性、重新命名的指令碼