上傳文件格式控制的困惑(application/octet-stream 限制不了BAT等格式上傳)問題解決


允許上傳類型部分代碼
$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"];文件的類型來限制。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM