1. 修改PHP配置文件php
file_uploads 服務器上的PHP腳本是否能夠接受HTTP文件上傳html
memory_limit 設置腳本能夠分配的最大內存量,防止失控腳本獨佔服務器內存數組
upload_max_filesize 限制PHP處理上傳文件的最大值,此值必須小於post_max_size值服務器
post_max_size 限制經過POST方法能夠接受的信息最大量函數
upload_tmp_dir 上傳文件存放的臨時路徑,能夠是絕對路徑。這個目錄對於擁有此服務器進程用戶必須是可寫的。post
注意:修改完配置文件後從新啓動服務器。spa
2. $_FILES多維數組,用於存儲各類與上傳有關的信息code
$_FILES[‘file’][‘name’] 客戶端上傳的文件原名稱,含擴展名orm
$_FILES[‘file’][‘size’] 已上傳文件的大小,單位爲字節htm
$_FILES[‘file][‘tmp_name’] 文件上傳後,在服務器端存儲的臨時文件名
$_FILES[‘file][‘error’] 文件上傳時產生的錯誤
0:文件上傳成功
1:上傳文件的大小超出了在PHP配置文件中upload_max_filesize選項限制的值
2:上傳文件大小超出了HTML表單中MAX_FILE_SIZE選項指定的值
3:文件只被部分上傳
4:沒有上傳任何文件
$_FILES[‘file’][‘type’] 上傳文件的類型,每種MIME類型由‘/’分隔主類型和子類型組成
3. PHP文件上傳處理函數
is_uploaded_file() 判斷指定的文件是否經過HTTP POST上傳的
move_uploaded_file() 文件上傳後先存儲於服務器的臨時目錄中,使用該函數移動文件位置
1 <?php 2 header('Content-type:text/html;charset=utf-8'); 3 //判斷客戶端是否有提交動做 4 if(isset($_POST['submit'])){ 5 //判斷文件是否經過HTTP POST上傳的 6 if(is_uploaded_file($_FILES['myfile']['tmp_name'])){ 7 //用於服務器端顯示客戶端上傳文件的後綴名.返回值是一個數組 8 $arr=pathinfo($_FILES['myfile']['name']); 9 //以年 月 日的格式命名客戶端上傳的文件名並隨機產生一個數,避免名字相同 10 $newName=date('YmdGis').rand(1000,99999); 11 if(move_uploaded_file($_FILES['myfile']['tmp_name'],"C:/123/{$newName}.{$arr['extension']}")){ 12 echo '成功'; 13 }else{ 14 echo '失敗'; 15 } 16 }else{ 17 exit('....'); 18 } 19 } 20 var_dump($_FILES); 21 ?> 22 <DOCTYPE html> 23 <html lang="en"> 24 <head> 25 <meta charset="utf-8"> 26 <title>文件上傳</title> 27 </head> 28 <body> 29 <form method="post" action="" enctype="multipart/form-data"> 30 <input type="file" name="myfile"/> 31 <input type="submit" name="submit" value="開始上傳"/> 32 </form> 33 </body> 34 </html>