這個檔案上傳實現可用於執行個體應用開發中了,因為做了比較好的安全限制了,當然大家還可以對上傳圖片檔案進行類型擷取判斷了。
今天改進了下旗下幾個網站的檔案上傳系統,順便發點東西。
全php代碼,無js,檔案類型根據尾碼名判斷,非mime判斷。
建立個up.php,代碼如下:
| 代碼如下 |
複製代碼 |
$uptype=array("jar","zip"); //允許上傳檔案類型 $max_file_size=20480000; //上傳檔案大小限制, 單位BYTE $path_parts=pathinfo($_SERVER['PHP_SELF']); //取得當前路徑 $destination_folder="files/"; //上傳檔案路徑 $name="MuXi_".date("Y-m-d_H-i-s"); //儲存檔案名稱 if($_SERVER['REQUEST_METHOD'] == 'POST') { $file = $_FILES["upload_file"]; if(!is_uploaded_file($file["tmp_name"])) //是否存在檔案 { echo "檔案不存在!"; exit; } $torrent = explode(".", $file["name"]); $fileend = end($torrent); $fileend = strtolower($fileend); if(!in_array($fileend, $uptype)) //檢查上傳檔案類型 { echo"不允許上傳此類型檔案!"; exit; } if($max_file_size < $file["size"]) //檢查檔案大小 { echo "檔案太大,超過上傳限制!"; exit; } if(!file_exists($destination_folder)) mkdir($destination_folder); $filename=$file["tmp_name"]; $image_size = getimagesize($filename); $pinfo=pathinfo($file["name"]); $ftype=$pinfo[extension]; $destination = $destination_folder.$name.".".$ftype; if(file_exists($destination) && $overwrite != true) { echo "同名檔案已經存在了!"; exit; } if(!move_uploaded_file ($filename, $destination)) { echo "移動檔案出錯!"; exit; } $pinfo=pathinfo($destination); $fname=$pinfo[basename]; echo "上傳成功!"; } ?> |
調用代碼:
用mime類型限制有局限性,有些檔案在上傳是不是正常本身的mime,導致上傳不成功,而用尾碼名限制可以很好的解決這個問題。
http://www.bkjia.com/PHPjc/632755.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632755.htmlTechArticle這個檔案上傳實現可用於執行個體應用開發中了,因為做了比較好的安全限制了,當然大家還可以對上傳圖片檔案進行類型擷取判斷了。 今天改...