2011-04-15 49 views
0

我有這個腳本進行圖像驗證。例如,對於500 kb或1.5 MB的圖像可以正常工作,但是如果我嘗試使用4mb或6的圖像,則會給出錯誤無效的格式,而不是「尺寸較大」。爲什麼?奇怪的圖像PHP驗證

$imageData = @getimagesize($_FILES["userfile"]["tmp_name"]); 

     if($imageData === FALSE || !($imageData[2] == IMAGETYPE_GIF || $imageData[2] == IMAGETYPE_JPEG || $imageData[2] == IMAGETYPE_PNG)) { 
      echo "<li>Invalid format</li>"; 
      die(); 
     } 
     else { 
      if($_FILES["userfile"]["size"] >= 2000000) { 
       echo "<li>The size large</li>"; 
       die(); 
      } 
       else { 
      //mystuff 
} 

感謝

+0

'@ getimagesize'做什麼? – 2011-04-15 18:53:37

回答

1

您還可能要檢查你的upload_tmp_dirpost_max_size以及在php.ini中的upload_max_filesize。如果您嘗試上傳的文件太大,我相信_FILES數組將不會被填充。

0

使用$ _FILES [ '大小'] ..和getimagesize是大型圖像

1

如果文件上傳成功你不檢查非常慢。 PHP有一個適用於上傳文件的內存限制,而你的'大'圖像很可能超過了這個限制。您應該檢查上傳這樣的:

if ($_FILES['userfile']['error'] === UPLOAD_ERR_OK) { 
    ... uploaded ok ... 
} else 
    echo "File upload failed on 'userfile' with error: " . $_FILES['userfile']['error']; 
} 
+0

語法錯誤行2,char「...」未被識別 – 2011-04-15 19:05:33