#副標=解決實作PHP網頁常見的問題
#大標=PHP檔案上傳與問題排除
#作者=文/圖 葉建榮
===<反灰>=============
檔案上載
================
===<反灰>=============
檔案上傳處理
$uploaddir="./upload";
$tmpfile=$_FILES["userfile"]["tmp_name"];
$file2=$_FILES["userfile"]["name"];
if(move_uploaded_file($tmpfile,$uploaddir.$file2)){
echo "上傳成功
";
echo "檔案名稱:".$_FILES["userfile"]["name"]."
";
echo "檔案類型:".$_FILES["userfile"]["type"]."
";
echo "檔案大小:".$_FILES["userfile"]["size"]."
";
}else{
echo "上傳失敗!
";
echo "檔案名稱:".$_FILES["userfile"]["name"]."
";
echo "檔案類型:".$_FILES["userfile"]["type"]."
";
echo "檔案大小:".$_FILES["userfile"]["size"]."
";
echo "失敗原因:". $_FILES['userfile']['error']."
";
} ?>
================
===<反灰>=============
$file2=mb_convert_encoding($_FILES["userfile"]["name"],"big5","utf8");
================
==程式1 ===========
進階檔案上傳處理
function fileerror($a) {
switch ($a){
case 1:
echo "失敗原因:大小超過php.ini內設定upload_max_filesize"."
";
break;
case 2:
echo "失敗原因:大小超過表單設定 MAX_FILE_SIZE"."
";
break;
case 3:
echo "失敗原因:上傳不完整"."
";
break;
case 4:
echo "失敗原因:沒有檔案上傳"."
";
break;
case 6:
echo "失敗原因:暫存資料夾不存在"."
";
break;
case 7:
echo "失敗原因:上傳檔案無法寫入"."
";
break;
case 8:
echo "失敗原因:上傳停止"."
";
break; } }
$uploaddir="./upload/";
$tmpfile=$_FILES["userfile"]["tmp_name"];
$file2=mb_convert_encoding($_FILES["userfile"]["name"],"big5","utf8");
$blacklist = array(".php", ".phtml", ".php3", ".php4", ".php5", ".exe", ".js",".html", ".htm", ".inc");
$allowed_filetypes = array('.jpg','.gif','.bmp','.png');
if (isset($_FILES['userfile'])) {
if ($_FILES['userfile']['error'] != 0) {
fileerror($_FILES['userfile']['error']);
} else {
foreach ($blacklist as $item) {
if (preg_match("/$item$/i", $_FILES['userfile']['name'])) {
echo "不合法檔案類型!";
unset($_FILES['userfile']['tmp_name']);
exit; } }
$ext = substr($_FILES['userfile']['name'], strpos($_FILES['userfile']['name'],'.'), strlen($_FILES['userfile']['name'])-1);
if(!in_array($ext,$allowed_filetypes)){
die('上傳的檔案沒有列在允許上傳清單內'); }
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
if (move_uploaded_file($tmpfile,$uploaddir.$file2)) {
echo "上傳成功!";
} else { echo "上傳失敗.";
fileerror($_FILES['userfile']['error']);
unset($_FILES['userfile']['tmp_name']); }
} else { fileerror($_FILES['userfile']['error']); } }
} else {echo "請挑選一個檔案上傳"; } ?>
================