2013-08-28 79 views
0

在PHP我有我的文件上傳代碼是這樣的PHP文件上傳

$image_name= $_FILES['file']['name']; 
    $allowedExts = array("gif", "jpeg", "jpg", "png"); 
    $temp = explode(".", $_FILES["file"]["name"]); 
    $extension = end($temp); 
    if ((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg") 
    || ($_FILES["file"]["type"] == "image/x-png") 
    || ($_FILES["file"]["type"] == "image/png")) 
    && in_array($extension, $allowedExts)) { 
    if ($_FILES["file"]["error"] > 0) { 
     echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else { 
    move_uploaded_file($_FILES['file']['tmp_name'], $tmpName.$image_name); 
    } 
    } 

下面這段代碼工作正常,當我在做上傳。但它不適用於文件類型驗證。我只使用 $allowedExts = array("gif", "jpeg", "jpg", "png"); to use only these types of file to upload. But this one is uploading any files type. So can someone kindly tell me where is the wrong part here. I want to upload only「gif」,「jpeg」,「jpg」,「png」文件。任何幫助和建議將非常令人欣喜。謝謝。

回答

0

我記得之前我有一個文件類型的問題,我無法解決它,所以我決定繼續與其他東西。 這是我檢查上傳的文件是否是「圖像」之前的方法之一。我不認爲檢查一個文件是否實際上是一個圖像的好方法,但它實際上對我有用,而且當時我什麼都不想。

<?php 
    if(isAnImage($routetoyourfile)) { 
     //Move the file 
    } else { 
     //Delete it 
    } 
    function isAnImage($fileroute) { 
     $ext = pathinfo($fileroute, PATHINFO_EXTENSION); 
     if($ext != "jpg" && $ext != "jpeg" && $ext != "png" && $ext != "JPG" && $ext != "PNG" && $ext != "JPEG") { 
      return 0; 
     } else { 
      return 1; 
     } 
    } 
?>