檔案上傳
通過<form>表單實作,將檔案上傳到一個臨時目錄,上傳的程序不需要我們管,只需將檔案移動到我們期望的目錄即可,
1. 修改PHP組態檔
file_uploads 服務器上的PHP腳本是否可以接受HTTP檔案上傳
memory_limit 設定腳本可以分配的最大記憶體量,防止失控腳本獨占服務器記憶體
upload_max_filesize 限制PHP處理上傳檔案的最大值,此值必須小于post_max_size值
post_max_size 限制通過POST方法可以接受的資訊最大量
upload_tmp_dir 上傳檔案存放的臨時路徑,可以是絕對路徑,這個目錄對于擁有此服務器行程用戶必須是可寫的,
注意:修改完組態檔后重新啟動服務器,
2. $_FILES多維陣列,用于存盤各種與上傳有關的資訊
$_FILES[‘file’][‘name’] 客戶端上傳的檔案原名稱,含擴展名
$_FILES[‘file’][‘size’] 已上傳檔案的大小,單位為位元組
$_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="https://www.cnblogs.com/lian9/p/開始上傳"/> 32 </form> 33 </body> 34 </html>


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/83266.html
標籤:PHP
下一篇:檔案下載
