今天小編就為大家帶來一篇有關php封裝上傳函數的文章。小編覺得挺實用的,為此分享給大家做個參考。一起跟隨小編過來看看吧。
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封裝上傳函數的具體操作,代碼詳細清楚,如果在日常工作遇到這個問題,希望你能通過這篇文章解決問題。如果想了解更多相關內容,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。