php上傳函數怎麼封裝

2020-07-16 10:06:41

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其它相關文章!