php上傳函數怎麼封裝?
<?php //上傳檔案呼叫 $file = $_FILES['image']; //允許上傳的型別 $allow = array('image/jpeg', 'image/png', 'image/jpg', 'image/gif'); $path = './uploads'; $maxsize = 1024 * 1024 * 3; $result = upload($file, $allow, $error, $path, $maxsize); if ($result) { //上傳成功 echo "檔案上傳成功,新的檔名叫".$result; }else{ //上傳失敗 echo $error; } /** *檔案的上傳 *@param array $file 上傳的檔案的相關資訊(是一個陣列有五個元素) *@param array $allow 允許檔案上傳的型別 *@param string & $error 參照傳遞,用來記錄錯誤的資訊 *@param string $path 檔案上傳的目錄,不帶最後的 / *@param int $maxsize = 1024*1024 允許上傳的檔案大小 *@return mixed false | $newname 如果上傳失敗返回false,成功返回檔案的新名字 **/ function upload($file, $allow, &$error, $path, $maxsize =1048576){ //先判斷系統錯誤 switch ($file['error']) { case 1: $error = '上傳錯誤,超出了伺服器檔案限制的大小!'; return false; case 2: $error = '上傳錯誤,超出了瀏覽器表單允許的大小!'; return false; case 3: $error = '上傳錯誤,檔案上傳不完整!'; return false; case 4: $error = '上傳錯誤,請您先選擇要上傳的檔案!'; return false; case 6: case 7: $error = '對不起,伺服器繁忙,請稍後再試!'; return false; } //判斷邏輯錯誤 //驗證檔案的大小 if ($file['size'] > $maxsize) { //超出使用者了自己規定的大小 $error = '上傳錯誤,超出了檔案限制的大小!'; return false; } //判斷檔案的型別 if (!in_array($file['type'], $allow)) { //非法的檔案型別 $error = '上傳的檔案的型別不正確,允許的型別有:'.implode(',', $allow); return false; } //移動臨時檔案 //指定檔案上傳後儲存的路徑 $newname = randName($file['name']); //得到檔案新的名字 //判斷$path 目錄是否存在 不存在則建立 if (!file_exists($path)) { mkdir($path, 0777, true); } $target = $path . '/' . $newname; $result = move_uploaded_file($file['tmp_name'], $target); if ($result) { //上傳成功 return $newname; }else{ //上傳失敗 $error = '發生未知錯誤,上傳失敗'; return false; } } /** *生成一個隨機名字的函數 檔名=當前的時間 + 隨機的幾位數位 *@param string $filename 檔案的原始名字 *@return string $newname 檔案的新名字 * */ function randName($filename){ //生成檔名的時間部分 $newname = date('YmdHis'); //加上隨機的6位數 $str = '0123456789'; for ($i=0; $i < 6; $i++) { $newname .= $str[mt_rand(0, strlen($str)-1)]; } //加上檔案的字尾名 $newname .= strrchr($filename, '.'); return $newname; }
HTML上傳程式碼
<!DOCTYPE html> <html> <head> <title>檔案上傳</title> <meta charset="utf-8"> </head> <body> <form method="post" action="upload.php" enctype="multipart/form-data"> <input type="file" name="image"> <input type="submit" name="" value="上傳"> </form> </body> </html>
推薦:《PHP教學》
以上就是php上傳函數怎麼封裝的詳細內容,更多請關注TW511.COM其它相關文章!