<?php $allowtype = array("gif", "png", "jpg"); //設置充許上傳的類型為gif, png和jpg $size = 1000000; //設置充許大小為1M(1000000字節)以內的文件 $path = "./uploads"; //設置上傳後保存文件的路徑 //判斷文件是否可以成功上傳到服務器,$_FILES['myfile']['error'] 為0表示上傳成功 if($_FILES['myfile']['error'] > 0) { echo '上傳錯誤: '; switch ($_FILES['myfile']['error']) { case 1: die('上傳文件大小超出了PHP配置文件中的約定值:upload_max_filesize'); case 2: die('上傳文件大小超出了表單中的約定值:MAX_FILE_SIZE'); case 3: die('文件只被部分上載'); case 4: die('沒有上傳任何文件'); default: die('末知錯誤'); } } //判斷上傳的文件是否為充許的文件類型,通過文件的後綴名 $hz = array_pop(explode(".", $_FILES['myfile']['name'])); //通過判斷文件的後綴方式,來決定文件是否是充許上傳的文件類型 if(!in_array($hz, $allowtype)) { die("這個後綴是<b>{$hz}</b>,不是充許的文件類型!"); } /* 也可以通過獲取上傳文件的MIME類型中的主類型和子類型,來限制文件上傳的類型 list($maintype,$subtype)=explode("/",$_FILES['myfile']['type']); if ($maintype=="text") { //通過主類型限制不能上傳文本文件,例如.txt .html .php等文件 die('問題: 不能上傳文本文件。'); } */ //判斷上傳的文件是否為充許大小 if($_FILES['myfile']['size'] > $size ) { die("超過了充許的<b>{$size}</b>字節大小"); } //為了系統安全,也為了同名文件不會被覆蓋,上傳後將文件名使用系統定義 $filename = date("YmdHis").rand(100,999).".".$hz; //判斷是否為上傳文件 if (is_uploaded_file($_FILES['myfile']['tmp_name'])) { if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $path.'/'.$filename)) { die('問題: 不能將文件移動到指定目錄。'); } }else{ die("問題: 上傳文件{$_FILES['myfile']['name']}不是一個合法文件: "); } //如果文件上傳成功則輸出 echo "文件{$upfile}上傳成功,保存在目錄{$path}中,大小為{$_FILES['myfile']['size']}字節";