WEB ◆ TS Library ◆ 熱衷分享 ◆ 享受教學相長 ◆ 無形的網絡擁有熱情溫度的傳遞

4-2. 檔案上傳的限制檢查

準備檔案、準備表單(與4-1相同)

開新檔案 upload002.php, 儲存在 ref 資料夾。

<h1>單檔上傳+限制條件(容量500K以下的jpg/png/gif圖檔上傳)</h1>
<form name="uploadForm" enctype="multipart/form-data" method="POST" action="">
  <input type="file" name="upload_file">
  <input type="submit" value="確定上傳">
</form>

接收上傳檔案,變數接收檔案資訊,判斷上傳成功與否(與4-1雷同)

<?php
//1.判斷接收到上傳檔案 => 通過 $_FILES 檔案上傳變數接收上傳檔案信息 ======================
if (isset($_FILES['upload_file'])) {
 
//接收上傳檔案 $file = $_FILES['upload_file']; //上傳檔案信息 $file_name = $file['name']; //上傳檔案的原來檔案名稱 $file_type = $file['type']; //上傳檔案的類型(副檔名) $tmp_name = $file['tmp_name']; //上傳到暫存空間的路徑/檔名 $file_size = $file['size']; //上傳檔案的檔案大小(容量) $error = $file['error']; //上傳工作傳回的錯誤訊息編號
  //設定上傳位置 $path = './img_upload/'; if (!file_exists($path)) { mkdir($path); } $path2 = './img_upload2/'; if (!file_exists($path2)) { mkdir($path2); }   //2.判斷上傳沒有錯誤時 => 檢查限制的條件 ============================================= if ($error == 0) {   //搬移檔案 $result = move_uploaded_file($tmp_name, $path.$file_name); echo '<br>---------檔案傳送' . $result;   if (file_exists($path.$file_name)) { //拷貝檔案 $result = copy($path.$file_name, $path2.'test'.$file_name); echo '<br>---------檔案拷貝' . $result; //刪除檔案 $result = unlink($path.$file_name); echo '<br>---------檔案刪除' . $result; }  
} else { //這裡表示上傳有錯誤, 匹配錯誤編號顯示對應的訊息 switch ($error) { case 1: echo '上傳檔案超過 upload_max_filesize 容量最大值'; break; case 2: echo '上傳檔案超過 post_max_size 總容量最大值'; break; case 3: echo '檔案只有部份被上傳'; break; case 4: echo '沒有檔案被上傳'; break; case 6: echo '找不到主機端暫存檔案的目錄位置'; break; case 7: echo '檔案寫入失敗'; break; case 8: echo '上傳檔案被PHP程式中斷,表示主機端系統錯誤' break; } }
} ?>

設定限制條件,先練習限制上傳檔案的容量

//設定限制條件 $max_size = 1024*1024; //設定允許上傳檔案容量的最大值(1M)
//2.判斷上傳沒有錯誤時 => 檢查限制的條件 ====================================== if ($error == 0) {  
//3.判斷上傳檔案的大小 =============================== if ($file_size > $max_size) { exit('上傳檔案過大,請選擇容量小於 1M 的檔案'); //輸出訊息並且結束離開程式 }
//以上條件檢查OK=>上傳=>拷貝=>刪除===================================== //搬移檔案

再練習限制上傳檔案的類型

 //設定限制條件
 $max_size = 1024*1024;                     //設定允許上傳檔案容量的最大值(1M)
$allow_ext = array('jpeg', 'jpg', 'png', 'gif'); //設定允許上傳檔案的類型
  //2.判斷上傳沒有錯誤時 => 檢查限制的條件 ============================================= if ($error == 0) {   //3.判斷上傳檔案的大小 =============================== if ($file_size > $max_size) { exit('上傳檔案過大,請選擇容量小於 1M 的檔案'); //輸出訊息並且結束離開程式 }
//4.判斷檔案類型 ==================================== //取得檔案延伸的副檔名, 以下函數可以取得檔案延伸的副檔名 //pathinfo(上傳檔案的原來檔案名稱, PATHINFO_EXTENSION) $ext = pathinfo($file_name, PATHINFO_EXTENSION); //in_array($ext, $allow_ext) 判斷 $ext變數的值 是否在 $allow_ext 這個陣列變數中 if (!in_array($ext, $allow_ext)) { exit('檔案類型不符合,請選擇 jpeg, jpg, png, gif 檔案'); }
//以上條件檢查OK=>上傳=>拷貝=>刪除===================================== //搬移檔案

 

 

go TOP