国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP文件上傳、客戶端和服務器端加限制、抓取錯誤信息、完整步驟解析

2024-05-04 23:54:24
字體:
來源:轉載
供稿:網友

文件上傳分為兩個部分,HTML顯示部分和PHP處理部分,HTML部分主要是讓用戶來選擇所要上傳的文件,然后通過PHP中的$_FILES,我們可以把文件上傳到服務器的指定目錄。

1.客戶端頁面

   客戶端的配置

    1.表單頁面

    2.表單發送方式為post

    3.表單form中添加enctype="multipart/form-data"

<body> <form action="doaction.php" method="post" enctype="multipart/form-data"> <input type="file" name="myfile"> <input type="submit" value="上傳"> </form></body>

2.處理頁面doaction

$_FILES:文件上傳變量

print_r($_FILES);

$_FILES:保存著上傳文件的信息

1.name:上傳文件的名稱

2.type:上傳文件的MIME類型

3.tmp_name:上傳到服務器上的臨時文件名

4.size:上傳文件的大小

5.error:上傳文件的錯誤號

$filename=$_FILES['myfile']['name'];$type=$_FILES['myfile']['type'];$tmp_name=$_FILES['myfile']['tmp_name'];$size=$_FILES['myfile']['size'];$error=$_FILES['myfile']['error'];

將服務器上的臨時文件移動到指定文件夾

1.move_uploaded_file(臨時文件名,‘文件夾名'.$filename);   將服務器上的臨時文件移動到指定文件夾,叫什么名字($filename),移動成功返回true,移動失敗返回false。

move_uploaded_file($tmp_name,"wenjian/".$filename);

2.copy("臨時文件名","文件名".$filename)  將服務器上的臨時文件拷貝到指定文件夾

文件上傳配置

file_uploads = on,支持HTTP上傳upload_tmp_dir= ,臨時文件保存的目錄upload_max_filesize=2M,允許上傳文件的最大值max_file_uploads=20,允許一次上傳的最大文件數post_max_size=8M,post方式發送數據的最大值

3.錯誤信息處理

上傳文件失敗時,判斷一下錯誤號,只有為0或者UPLOAD_ERR_OK,才沒有錯誤發生,上傳成功

下面是抓取錯誤

if($error==UPLOAD_ERR_OK){  if(move_uploaded_file($tmp_name,"wenjian/".$filename))  {    echo "文件".$filename."上傳成功";    }else    {      echo "文件".$filename."上傳失敗";      }  }  else  {    //匹配錯誤信息    switch($error)    {      case 1:      echo "上傳文件超過了PHP配置文件中upload_max_filesize選項的值";      break;      case 2:      echo "超過了表單MAX_FILE_SIZE的限制大小";      break;      case 3:      echo "文件部分被上傳";      break;      case 4:      echo "沒有選擇上傳文件";      break;      case 6:      echo "沒有找到臨時目錄";      break;      case 7:      case 8:      echo "系統錯誤";      break;      }    }?>

4.上傳文件限制

《客戶端限制:》

通過表單隱藏域限制上傳文件的最大值

<input type="hidden" name="MAX_FILE_SIZE" value="字節數">

通過accept屬性限制上傳文件的類型

<input type="file" name="myfile" accept="文件的MIME類型">

《服務器端限制》

1.限制上傳文件大小

2.限制上傳文件類型

3.檢測是否為真實圖片類型

4.檢測是否為HTTP POST方式上傳

5.判斷服務器上存儲的文件夾在不在

6.防止重名產生覆蓋

<?php$fileinfo=$_FILES["myfile"];$maxsize=2097152;     //寫最大的字節數,自己算$allowext=array('jpeg','jpg','pnd','gif','wbmp');  //定義一下允許的上傳文件類型//1.判斷錯誤號if($fileinfo['error']==0){  //1.判斷上傳文件大小if($fileinfo['size']>$maxsize)  {    exit('上傳文件過大');    } //2.判斷上傳文件類型是不是在規定類型中$ext=strtolower(end(explode(',',$fileinfo['name'])));//截取上傳文件擴展名  if(!in_array($ext,$allowext))  // 判斷上傳文件的擴展名是不是在定義類型中  {     exit('非法文件類型');      } //3.判斷文件是否是通過HTTP POST方式上傳上來的if(!is_uploaded_file($fileinfo['tmp_name']))  {    exit('文件不是通過HTTP POST方式上傳上來的');    } //4.檢測是否為真實的圖片類型,而不是認為改動的$flag=true;  if($flag)  {    if(!getimagesize($fileinfo['tmp_name']))    {      echo "不是真實的圖片類型";      }    }  $path='uploads'; //服務器上存儲文件的文件名//5.判斷服務器上存儲的文件夾在不在if(!file_exists($path))  {    mkdir($path,0777,true);//不存在就創建一個目錄    chmod($path,0777);//加一個權限    } //6.確保文件名唯一,防止重名產生覆蓋$uniname=md5(uniqid(microtime(true),true)).'.'.$ext;  //通過MD5加密等措施給文件名取名  $destination=$path.'/'.$uniname;  if(move_uploaded_file($fileinfo['tmp_name'],$destination)) //上傳文件  {    echo "文件上傳成功";    }else    {      echo "文件上傳失敗";      }  }else  {//匹配錯誤信息  switch($error)    {      case 1:      echo "上傳文件超過了PHP配置文件中upload_max_filesize選項的值";      break;      case 2:      echo "超過了表單MAX_FILE_SIZE的限制大小";      break;      case 3:      echo "文件部分被上傳";      break;      case 4:      echo "沒有選擇上傳文件";      break;      case 6:      echo "沒有找到臨時目錄";      break;      case 7:      case 8:      echo "系統錯誤";      break;      }    }?>

5.完整的上傳文件步驟

第一步:表單頁內容

<body> <form action="doaction.php" method="post" enctype="multipart/form-data">//通過表單隱藏域限制上傳文件的最大值<input type="hidden" name="MAX_FILE_SIZE" value="字節數">//通過accept屬性限制上傳文件的類型<input type="file" name="myfile" accept="文件的MIME類型"></form> </body>

第二步:處理界面。定義變量

<?php//$_FILES:文件上傳變量print_r($_FILES);//$_FILES:保存著上傳文件的信息/*1.name:上傳文件的名稱2.type:上傳文件的MIME類型3.tmp_name:上傳到服務器上的臨時文件名4.size:上傳文件的大小5.error:上傳文件的錯誤號*/$filename=$_FILES['myfile']['name'];$type=$_FILES['myfile']['type'];$tmp_name=$_FILES['myfile']['tmp_name'];$size=$_FILES['myfile']['size'];$error=$_FILES['myfile']['error'];

 第三步:處理頁面上服務器加限制和輸出錯誤信息

1.限制上傳文件大小

2.限制上傳文件類型

3.檢測是否為真實圖片類型

4.檢測是否為HTTP POST方式上傳

5.判斷服務器上存儲的文件夾在不在

6.防止重名產生覆蓋 

//服務器端限制<?php$fileinfo=$_FILES["myfile"];$maxsize=2097152;     //寫最大的字節數,自己算$allowext=array('jpeg','jpg','pnd','gif','wbmp');  //定義一下允許的上傳文件類型//1.判斷錯誤號if($fileinfo['error']==0){  //1.判斷上傳文件大小if($fileinfo['size']>$maxsize)  {    exit('上傳文件過大');    } //2.判斷上傳文件類型是不是在規定類型中$ext=strtolower(end(explode(',',$fileinfo['name'])));//截取上傳文件擴展名  if(!in_array($ext,$allowext))  // 判斷上傳文件的擴展名是不是在定義類型中  {     exit('非法文件類型');      } //3.判斷文件是否是通過HTTP POST方式上傳上來的if(!is_uploaded_file($fileinfo['tmp_name']))  {    exit('文件不是通過HTTP POST方式上傳上來的');    } //4.檢測是否為真實的圖片類型,而不是認為改動的$flag=true;  if($flag)  {    if(!getimagesize($fileinfo['tmp_name']))    {      echo "不是真實的圖片類型";      }    }  $path='uploads'; //服務器上存儲文件的文件名//5.判斷服務器上存儲的文件夾在不在if(!file_exists($path))  {    mkdir($path,0777,true);//不存在就創建一個目錄    chmod($path,0777);//加一個權限    } //6.確保文件名唯一,防止重名產生覆蓋$uniname=md5(uniqid(microtime(true),true)).'.'.$ext;  //通過MD5加密等措施給文件名取名  $destination=$path.'/'.$uniname;  $destination=inocv("UTF-8","gb2312",$destination); //如果上傳的文件名中有漢字,需要轉碼一下,用inocv函數,把utf-8轉為gb2312.  if(move_uploaded_file($fileinfo['tmp_name'],$destination)) //上傳文件  {    echo "文件上傳成功";    }else    {      echo "文件上傳失敗";      }  }else  {

第四步:匹配錯誤信息

switch($error)    {      case 1:      echo "上傳文件超過了PHP配置文件中upload_max_filesize選項的值";      break;      case 2:      echo "超過了表單MAX_FILE_SIZE的限制大小";      break;      case 3:      echo "文件部分被上傳";      break;      case 4:      echo "沒有選擇上傳文件";      break;      case 6:      echo "沒有找到臨時目錄";      break;      case 7:      case 8:      echo "系統錯誤";      break;      }    }?>

以上所述是小編給大家介紹的PHP文件上傳、客戶端和服務器端加限制、抓取錯誤信息、完整步驟,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!

 

注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 荣成市| 潞西市| 新昌县| 大丰市| 浮山县| 小金县| 麦盖提县| 台东县| 蒙山县| 宁河县| 寻乌县| 潢川县| 惠水县| 贡山| 崇仁县| 莫力| 合川市| 永顺县| 湖北省| 马边| 平远县| 厦门市| 阿克陶县| 鲁山县| 井陉县| 夏津县| 改则县| 萨嘎县| 周至县| 康保县| 五台县| 大田县| 海淀区| 固阳县| 鞍山市| 邢台县| 九江县| 开江县| 礼泉县| 嫩江县| 太康县|