2014-03-03 66 views
0

我有表單驗證問題。當我不選擇文件上傳時,我仍然得到一個錯誤,只提示png圖像有效。我認爲,如果沒有選擇文件$ _FILES數組將是空的。php html文件上傳表單驗證錯誤

我在做什麼錯?

我上傳文件的HTML表單摘錄如下:

<label for="file">Filename 
<span class="small">Upload image</span> 
</label> 
<input type="file" name="file" id="file"> 

我的PHP處理是這樣的:

$submitted_file = $_FILES['file']; 

if(isset($submitted_file)) { 

    // verify the file PNG only 
    $fileType = exif_imagetype($submitted_file["tmp_name"]); 
    $allowed = array(IMAGETYPE_PNG); 
    $max_filesize = 512000; 

    if (!in_array($fileType, $allowed)) { 
    $proceed = false; 
    $arrErrors['submitted_file_ext'] = 'Please upload .png images only.'; 
    } 
} 
+1

'的var_dump($ _ FILES);'看,即使你不加載一個文件,'$ _FILES'數組仍然被設置。 –

+1

您正在查看isset($ submitted_file),您將其設置爲$ _FILES [「file」]。所以它即使設置爲null也是如此。你應該檢查它是否爲empty()函數或類似if($ submitted_file ==「」) – SyntaxLAMP

+0

我做了一個var_dump並得到數組(5){[「name」] => string(0 )「」[「type」] => string(0)「」[「tmp_name」] => string(0)「」[「error」] => string(1)「4」[「size」] =>字符串(1)「0」} – Ruf1

回答

0

您正在檢查應該有場[「tmp_name的值」的數組]爲空,如果它是空白的。試試這個代碼,而不是:

if(!empty($submitted_file["tmp_name"])) { 
+0

我試過不是空的,但沒有工作,如果(!empty($ submitted_file)){ – Ruf1

+0

編輯。試試這個 – SyntaxLAMP

+0

謝謝。那工作。如果你不介意告訴我,那爲什麼這樣做呢? – Ruf1