2012-09-16 233 views
0

在檢查上傳圖像的文件擴展名時,我的代碼始終返回false,導致圖像未被上傳。上傳的圖片具有適當的擴展名。文件上傳不上傳文件擴展名檢查

我的問題是爲什麼它不接受文件?如果支票取出文件,則成功上傳。如果您有其他支票,請不要擔心這是我唯一的安全檢查。只是這是造成所有問題的原因。

$name = $_FILES['file']['name']; 
$tmp_name = $_FILES['file']['tmp_name']; 
$pre_ext = explode(".", $tmp_name); 
$ext = end($pre_ext); 

if (getimagesize($tmp_name) != false) 
{ 
    //below is the check that is causing all the problems 
    if ($ext == "PNG" || $ext == "png" || $ext == "jpg" || $ext == "JPG" || $ext == "jpeg" || $ext == "JPEG" || $ext == "GIF" || $ext == "gif"){ 
     if ($_FILES['file']['error'] == 0)  
     { 
      move_uploaded_file($tmp_name, 'post_images/' . $name); 
     }  
    } 
} 

回答

2
$name = $_FILES['file']['name']; 
$tmp_name = $_FILES['file']['tmp_name']; 
$pre_ext = explode(".", $name); 

應該修復它。我建議檢查文件本身,而不僅僅是擴展名。 tmp_name是您的服務器上的臨時名稱,通常類似/tmp/random8y7ofad9

+0

太棒了,非常感謝。如果我有一個後續問題,並且這與我當前的問題無關,如果我沒有使用'move_uploaded_file()',圖像在tmp文件夾中的持續時間有多長? – jason328

+0

當腳本運行完畢時,它會被刪除。所以如果你想稍後使用它,你必須使用'move_uploaded_file'或'copy'複製它。 –

相關問題