如何限制 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 官方文件

更多文章:
如何用 PHP 上傳檔案?
Secret Upload 2.6 正式公開!!
  • 作者:secret
  • 發布
  • 分類:PHP