本文執行個體分析了PHP檔案上傳操作。分享給大家供大家參考,具體如下:
檔案上傳
發生在浏覽器向伺服器發出的請求中。
檔案,對于浏覽器來講,就是表單中的一個特殊類型的資料而已。
浏覽器表單中的資料,兩種類型:
字元串類型(位元組流編碼)
檔案類型(二進制編碼),檔案是表單資料中一部分
伺服器角度:
在接受浏覽器請求時,處理好表單内的資料。根據資料類型不同使用不同處理方法:
字元串類型,存儲在$_POST變量中(記憶體)
檔案型資料,存儲在上傳臨時目錄中
表單送出時,浏覽器會預設的行為:
表單内的的内容都是字元串類型,即使添加了檔案域,需要在form上增加屬性,告知浏覽器上傳的不止有字元串類型資料。enctype="multipart/form-data"
?
1 2 3 4 5 6 7 | |
php伺服器在接收到檔案類型的表單資料後,将檔案存儲于臨時目錄(屬于臨時檔案,腳本周期内有效)
?
1 2 3 4 | |
将臨時檔案持久化存儲
?
1 | |
$_FILES,存儲了上傳檔案的資訊包括臨時位址

錯誤類型:
0-1-2-3-4-6-7
0表示沒有錯誤
1表示檔案大于php的設定
?
1 2 3 | |
2表示檔案大于表單設定max_file_size
?
1 | |
3表示檔案上傳不完整
4表示沒有上傳檔案
5表示邏輯上上傳了0位元組的檔案(空檔案)
6表示沒有找到臨時上傳目錄(權限不足)
7表示檔案寫入失敗(磁盤空間、權限)
php允許的最大上傳檔案數量
?
1 2 | |
post存在最大值限制
一旦超過,php就不能正常處理post與file值可能為空值
?
1 2 3 | |
類型檢測中
字尾名與mime都是浏覽器提供的,需要php的擴充fileinfo完成對檔案資訊的檢查(函數過程與面向對象)
;extension=php_fileinfo.dll
?
1 2 | |
分子目錄存儲上傳檔案
原則:業務邏輯、檔案數量、時間
建立目錄 mkdir()
檢查目錄 is_dir()
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | |
更多關于PHP相關内容感興趣的讀者可檢視本站專題:《php檔案操作總結》、《PHP數組(Array)操作技巧大全》、《PHP基本文法入門教程》、《PHP運算與運算符用法總結》、《php面向對象程式設計入門教程》、《PHP網絡程式設計技巧總結》、《php字元串(string)用法總結》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧彙總》