允許上傳類型部分代碼
$uptypes=array( //上傳文件類型列表
'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png','application/msword','application/vnd.ms-excel',
'image/bmp','text/plain','application/octet-stream','image/x-png','application/x-shockwave-flash','audio/mpeg','audio/x-ms-wma',
'application/x-zip-compressed'
);
判斷文件類型部分
if(!in_array($_FILES["upfile"]["type"], $uptypes))
//檢查文件類型
{
echo "<font color='red'>不能上傳此類型文件!</font>";
exit;
}
我的本意是想允許RAR這類文件上傳,但做測試時,BAT,EXE等格式都可以上傳,我測試了一下,這類文件的也是$_FILES["upfile"]["type"]是'application/octet-stream',所以就能上傳了。
目前我要想允許RAR上傳,又能禁止BAT其它的格式文件上傳怎么辦?
解決的代碼:
$uptypes=array( //上傳文件類型列表
'gif', 'jpg','jpeg','png','doc','xls',
'bmp','txt','rar','swf','mp3','wma',
'zip'
);
$test=$_FILES["upfile"]["name"];
function getFileExt($file_name)
{
while($dot = strpos($file_name, "."))
{
$file_name = substr($file_name, $dot+1);
}
return $file_name;
}
$test1= strtolower(getFileExt($test));
if(!in_array($test1, $uptypes))
//檢查文件類型
{
echo "<font color='red'>不能上傳此類型文件!</font>";
exit();
}
小結:直接檢查文件的擴展名用$_FILES["upfile"]["name"];,而不是用這個$_FILES["upfile"]["type"];文件的類型來限制。