使用empty判斷$_FILES['value']是否為空值的方法-教學撰寫:徐嘉裕Neil hsu

最近幫客戶寫了一個檔案上傳的功能,想要做個empty判斷確認是否有上傳檔案,有值才要進行後續的程式運作,像這樣的功能!!



結構

 <input type='file' class='form-control' name='class_excelname' id='class_excelname' accept='xls'> 

寫了一個判斷語法

if(!empty($_FILES['class_excelname'])){ //判斷是否有傳入值

echo '有檔案上傳;;

}
但怎麼測試即使沒有上傳檔案empty還是判斷有值,真是非常的奇怪,$_FILES['class_excelname']明明就是空的阿!!那是哪出問題了,後來用var_dump();看了一下$_FILES['class_excelname']裡面到底有什麼東東,顯示下面的內容!

array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) }

原來在$_FILES裡面還包含了name,type,tmp_name,error,size五個欄位數值,所以是二維陣列形式,難怪判斷$_FILES['class_excelname']會顯示有值,因為裡面還有個空陣列!

修改一下,改成


if(!empty($_FILES['class_excelname']['name'])){ //判斷是否有傳入值

echo '有檔案上傳;;

}
抓第二層陣列裡面的name來判斷是否有數值,這樣就沒問題了!!可以正確的判斷出是否有檔案被上傳。


如果是多檔上傳name是陣列格式,則判斷空陣列方式需要以name第一個陣列值為判斷依據

if(!empty($_FILES['class_excelname']['name'][0])){ //判斷是否有傳入值

echo '有檔案上傳;;

}

這樣就沒問題了!!

教學撰寫:徐嘉裕 Neil hsu


留言

這個網誌中的熱門文章

jquery.datepicker下拉月曆只顯示年-月的設定方法-教學撰寫:徐嘉裕Neil hsu

在CentOS7上安裝XAMPP並設定允許外部連線phpmyadmin的方法-教學撰寫:徐嘉裕Neil hsu

jQuery用.each()取代for迴圈