2014-01-13 56 views
-1

我問過這個問題,發現PHP配置限制了我的上傳到2MB,所以我將它固定爲3MB。不過,我現在還有另外一個問題:我也在檢查圖片尺寸,如果圖片超過3MB,則拋出以下錯誤。那麼我怎樣才能停止錯誤,並通過自己而不是PHP配置來檢查大小?警告:getimagesize():文件名不能爲空php

警告:和getimagesize():文件名不能爲空

下面是代碼:

$size = $_FILES['image']['size']; 
list($width, $height) = getimagesize($_FILES['image']['tmp_name']); 
$minh = 400; 
$minw = 600; 
$one_MB = 1024*1024; //1MB 
if($size > ($one_MB*3))// this is not checking the size at all, the last echo is what I get if I try to upload over 3mb. 
{ 
    echo"File exceeds 3MB"; 
} 
elseif ($width < $minw) { 
    echo "Image width shouldn't be less than 600px"; 
} 
elseif ($height < $minh){ 
    echo "Image height shouldn't be less than 400px"; 
} 
else{ 
    if (move_uploaded_file($_FILES['image']['tmp_name'], $new_location)){ 
    //do something 
    } 
    else{ 
    echo "Image is too big, try uploading below 3MB"; 
    } 
} 

回答

0

貌似上傳出了問題在某些時候。嘗試和getimagesize()之前加入一些錯誤處理:

if (!file_exists($_FILES['image']['tmp_name'])) { 
    echo "File upload failed. "; 
    if (isset($_FILES['upfile']['error'])) { 
     echo "Error code: ".$_FILES['upfile']['error']; 
    } 
    exit; 
} 

很難說爲什麼它失敗了,因爲它牽涉到很多參數。錯誤代碼可能會給你一個提示。

否則也許開始閱讀這裏:http://de2.php.net/manual/en/features.file-upload.php

+0

我已經嘗試過與1.5MB相同的圖像,它的工作原理和當我嘗試3.5 MB時失敗,所以它失敗的原因是因爲圖像大小。我不明白的是爲什麼第一個'if'語句沒有檢查文件大小並讓執行繼續。我會嘗試你的建議。 – user3006683

+0

您應該在調用get_image_size()之前檢查文件大小**。在執行任何錯誤處理之前,您的腳本失敗。 – MrTweek

0

我也有同樣的錯誤,去爲php.ini並轉到行800「的upload_max_filesize」。 選擇您的最大上傳文件大小,我將我的設置爲4M,並在我的實際網站代碼中,我不允許3MB後任何東西。 由於某些原因,如果它們都是相同大小不起作用,PHP.ini需要至少比您允許上傳的大1mb。

相關問題