[php] 上傳多檔並判斷檔案格式與上傳錯誤訊息

除了判斷副檔名外還要判斷格式是不是符合副檔名。

  1. $uptypes = array (     
  2.     'image/jpg',     
  3.     'image/jpeg',     
  4.     'image/pjpeg',     
  5.     'image/gif',     
  6.     'image/png'     
  7. );   
  8. foreach($_FILES['newPic']['tmp_name'as $key => $tmp_name ){     
  9.     $fileName=$_FILES["newPic"]["name"][$key];   
  10.     //取得檔案副檔名   
  11.     $fileExt=pathinfo($_FILES["newPic"]["name"][$key], PATHINFO_EXTENSION);   
  12.     if(in_array($_FILES['newPic']['type'][$key], $uptypes)) {     
  13.             /*上傳圖片類型為jpg,pjpeg,jpeg */     
  14.         if (strstr(strtolower($_FILES['newPic']['type'][$key]), "jp")) {     
  15.             if(!($source = @ imageCreatefromjpeg($_FILES['newPic']['tmp_name'][$key]))){     
  16.                 echo '檔案類型錯誤';     
  17.                 return;     
  18.             }     
  19.         /*上傳圖片類型為png */     
  20.         }elseif(strstr(strtolower($_FILES['newPic']['type'][$key]), "png")) {     
  21.             if(!($source = @ imagecreatefrompng($_FILES['newPic']['tmp_name'][$key]))){     
  22.                 echo '檔案類型錯誤';     
  23.                 return;     
  24.             }     
  25.         /*上傳圖片類型為gif */     
  26.         }elseif(strstr(strtolower($_FILES['newPic']['type'][$key]), "gif")) {     
  27.             if(!($source = @ imagecreatefromgif($_FILES['newPic']['tmp_name'][$key]))){     
  28.                 echo '檔案類型錯誤';     
  29.                 return;     
  30.             }     
  31.             /*其他例外圖片排除 */     
  32.         } else {     
  33.             echo '檔案類型錯誤';     
  34.             return;     
  35.         }    
  36.     }   
  37. }  

抓取上傳錯誤訊息
  1. if($_FILES['newPic']['error'] > 0){   
  2.     switch($_FILES['newPic']['error']){   
  3.         case 1:   
  4.             $error="檔案大小超出 php.ini:upload_max_filesize 限制";   
  5.             break;   
  6.         case 2:   
  7.             $error="檔案大小超出 MAX_FILE_SIZE 限制";   
  8.             break;   
  9.         case 3:   
  10.             $error="檔案僅被部分上傳";   
  11.             break;   
  12.         case 4:   
  13.             $error="檔案未被上傳";   
  14.             break;    
  15.     }   
  16.   
  17. }  

留言