php進階——01 檔案上傳
阿新 • • 發佈:2018-12-01
php.ini相關引數
file_uploads
是否允許PHP上傳檔案,預設為ON
。
upload_tmp_dir
上傳檔案在處理之前,必須先上傳到伺服器上的某個臨時資料夾;
此引數就是決定臨時目錄的路徑,此目錄需要有讀寫許可權。
一般不需要改。
max_input_time
對POST/GET/PUT方式接收資料的時間限制,單位s。
max_execution_time
等待指令碼執行完畢的最長時間,單位s。
如果需要上傳大檔案,此配置數值不能過小!
upload_max_filesize
允許上傳檔案的最大值,預設為2MB。
post_max_size
控制POST方式提交表單時,允許接收的最大資料量(MB);
由於POST資料除了檔案,還有可能包含其他表單資料,此值應大於upload_max_filesize的值。
memory_limit
PHP的記憶體使用上限,避免指令碼過量使用系統資源;
由於上傳是記憶體處理得資料中除了POST資料外可能包含其他資料,此值應大於post_max_size的值。
相關錯誤
單檔案上傳
html程式碼
<form action="upload.php" method="post" enctype="multipart/form-data"> <input name="upload" type="file"> <input type="submit" value="上傳檔案"> </form>
php程式碼
1.我們通過$_FILES
獲取上傳的檔案資訊;
2.它返回的值是一個數組:
[upload] => [
[name] => 檔名
[type] => 檔案型別
[tmp_name] => 臨時路徑 + 臨時檔名
[error] => 錯誤型別
[size] => 大小
]
3.具體程式碼如下
// 1.獲取錯誤碼 $error = $_FILES['upload']['error']; // 2.臨時路徑名 ↓這裡的key和input的name一致 $tmp_name = $_FILES['upload']['tmp_name']; // 3.目的路徑名 $final_name = './upload/'.$_FILES['upload']['name']; // 4.錯誤校驗 if($error){ // 5.根據錯誤碼,返回相應錯誤資訊 switch($error){ case 1: case 2: echo "檔案大小超出限制"; case 3: echo "檔案上傳不完整"; case 4: echo "未選中上傳檔案"; } // 6.如果沒有錯誤 }else{ // 7.移動上傳的檔案 $result = move_uploaded_file($tmp_name, $final_name); // 8.輸出資訊 echo $result ? "上傳成功" : "上傳失敗"; }