文件上傳分為客戶端和服務器端
客戶端可以通過form表單進行上傳
客戶端使用html表單進行上傳
enctype = "multipart/form-data"用來指定表單編碼數據方式
method = "POST"指明發送數據的方法
<form action = "upload.php" method = "POST" enctype = "multipart/form-data">
<input type = "hidden" name = "MAXN_FILIE_SIZE" value = "100000">
選擇文件:<input type = "file" name = "myFile">
<input type = "submit" value = "上傳文件">
</form>
最主要的就是type="file"的<input>標簽
服務器端
1 <!-- 2 簡單的文件上傳的PHP腳本 3 -> 4 <?php 5 $allowtype = array("gif","png","jpg"); 6 $size = 1000000; 7 $path = "./upload"; 8 9 if($_FILES['myfile']['error'] > 0){ 10 echo "文件上傳錯誤"; 11 switch($_FILES['myfile']['error']){ 12 case 1 :die('上傳文件大小超過了PHP配置文件中的約定值'); 13 case 2 :die('上傳文件大小超過了瀏覽器中的約定值'); 14 case 3 :die('文件只被上傳部分'); 15 case 4 :die('沒有上傳的文件'); 16 default :die('其它錯誤'); 17 } 18 } 19 20 $hz = array_pop(explode(".",$_FILES['myfile']['name'])); 21 if(!in_array($hz,$allowtype)){ 22 die("這個后綴是<b>{$hz}</b>不是允許的類型"); 23 } 24 25 if($_FILES['myfile']['size'] > $size){ 26 die("超過了允許的<b>$size</b>字節大小"); 27 } 28 29 $filename = date("YmdHis").rand(100,999).".".$hz; 30 31 if(is_uploaded_file($_FILES['myfile']['tmp_name'])){ 32 if(!move_uploaded_file($_FILES['myfile']['tmp_name'],$path.'/'.$filename)){ 33 die("不能將文件移動到指定目錄"); 34 } 35 }else{ 36 die("上傳文件:{$_FILES['myfile']['name']}不是一個合法文件"); 37 } 38 39 echo "文件{$myfile}上傳成功,保存在目錄{$path}中,大小為{$_FILES['myfile']['size']}字節"; 40 ?>
用POST方法將文件上傳時主要運用到的是$_FILES[]全局數組
$_FILES是一個二維數組 $_FILES['myfile']['name'] $_FILES['myfile']['tmp_name'] $_FILES['myfile']['size'] $_FILES['myfile']['error'] $_FILES['myfile']['type']
用到的函數有:is_uploaded_file() move_uploaded_file()
多個文件上傳時只需要運用myfile[]數組即可 此時的$_FILES是三維數組
1 <form action = "upload.php" method = "POST" enctype = "multipart/form-data"> 2 <input type = "hidden" name = "MAXN_FILIE_SIZE" value = "100000"> 3 選擇文件1:<input type = "file" name = "myFile[]"> 4 選擇文件2:<input type = "file" name = "myFile[]"> 5 選擇文件3:<input type = "file" name = "myFile[]"> 6 <input type = "submit" value = "上傳文件"> 7 </form>