如何限制 PHP 上傳之檔案格式?
還記得很久以前我曾經寫過一篇『如何用 PHP 上傳檔案?』,最近才發現還滿多人討論的(有點後知後覺?不過也不少人把文章直接複製拿去抄0.0),所以就決定續寫啦~~這次要寫的是用副檔名來判斷使用者所上傳的檔案格式。
(本文將直接接續如何用 PHP 上傳檔案?,前置作業請參考該文)
一、從檔案名稱中取得副檔名
取得副檔名用:pathinfo(檔案路徑[,參數])
其中參數可以選填
- PATHINFO_BASENAME:取得檔案名稱
- PATHINFO_DIRNAME:取得資料夾名稱
- PATHINFO_EXTENSION:取得檔案副檔名
在這裡會使用到的是 PATHINFO_EXTENSION 參數。
$extension=pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION);//取得檔案副檔名
二、判斷是否為允許的檔案格式
in_array(值,陣列)
in_array這個函數會檢查『值』是否存在陣列中
接下來,使用 in_array() 判斷是否為允許的檔案格式,如果為是,則檔案被複製到指定位置;否則輸出錯誤訊息。
if(in_array($extension,array('jpg','png','gif'))){//檢查檔案副檔名 move_uploaded_file($_FILES['file']['tmp_name'],'file/'.$_FILES['file']['name']);//複製檔案 echo '<a href="file/'.$_FILES['file']['name'].'">file/'.$_FILES['file']['name'].'</a>';//顯示檔案路徑 }else{ echo '不允許該檔案格式'; }
大功告成~!~! 使用副檔名應該算是最簡單的檔案格式檢驗法,當然也是可以用 MIME 之類的方法下去檢查,有興趣的朋友可以看看PHP 官方文件。
- 作者:secret
- 在 2017-08-25 發布
- 分類:PHP