PHP檔案上傳的處理流程以及涉及到的各方面注意
HTML基礎
通過POST表單方式提交
PHP上傳步驟
- 用戶端通過HTTP POST方式表單提交
- 檔案上傳後儲存在預設臨時目錄,配置php.ini屬性upload_tmp_dir和PHP運行環境變數TMPDIR可以設定臨時目錄,php語言中函數putenv設定無效
- 使用move_upload_file將上傳從臨時目錄移動到指定位置(如果upload_tmp_dir已經設定到指定位置就不需要此步驟)
- 如果表單沒有選擇上傳檔案 $_FILES['userfile']['type'] == “” , $_FILES['userfile']['size']== 0
PHP相關全域預定義變數
- $_POST [數組] 用來擷取表單POST方式提交的參數
- $_FILES [數組]
- $_FILES['userfile']['name'] 用戶端機器原名稱 userfile == input控制項中的name屬性
- $_FILES['userfile']['type'] 檔案MIME類型
- $_FILES['userfile']['size'] 已上傳檔案大小(位元組)
- $_FILES['userfile']['tmp_name'] 檔案被上傳後再服務端儲存的臨時檔案名稱
- $_FILES['userfile']['error'] 和該檔案上傳相關的錯誤碼
PHP相關函數
- is_upload_file(string $filename) 判斷檔案是否通過HTTP POST方式上傳
- move_upload_file($file,$des) 將上傳檔案移動到新位置,檢查file是合法上傳檔案
參數中涉及的檔案名稱都是絕對路徑
php.ini相關設定
- file_uploads [boolean] 是否允許HTTP檔案上傳
- upload_max_filesize [integer]上傳檔案的最大大小,預設2M
- post_max_size [integer]POST資料允許的最大大小,此值>upload_max_filesize
- memory_limit [integer]此值>post_max_size
- max_input_time [integer] 上傳時間指令碼執行開始計到資料全部到達伺服器截至,預設60s
- upload_tmp_dir [string] 檔案上傳存放檔案臨時目錄,PHP進程所有者使用者可寫入權限
- max_execution_time [integer]指令碼執行時間,系統調用、sleep、資料庫查詢、檔案上傳的時間不包括
錯誤資訊
- [0] UPLOAD_ERR_OK 檔案上傳成功
- [1] UPLOAD_ERR_INI_SIZE 檔案上傳超過UPLOAD_MAX_SIZE
- [2] UPLOAD_ERR_FORM_SIZE 上傳檔案大小超過MAX_FILE_SIZE
- [3] UPLOAD_ERR_PARTIAL 檔案部分上傳成功
- [4] UPLOAD_ERR_NO_FILE 沒有檔案被上傳
- [6] UPLOAD_ERR_NO_TMP_DIR 找不到臨時檔案夾
- [7] UPLOAD_ERR_CANT_WRITE 檔案寫入失敗
PHP服務端上傳安全處理
- 尾碼名檢查
- 大小限制
- Content-Type檢查
- 如果是圖片使用getimagesize進行檔案類型檢查
- 通過伺服器分別設定應用目錄和上傳目錄存取權限
您可能感興趣的文章
- PHP分析檔案頭資訊判斷上傳檔案的類型
- php檔案上傳相關配置教程
- jquery+html+php 實現Ajax無重新整理檔案上傳
- PHP判斷上傳檔案類型最安全,最真實的解決辦法
- php實現將檔案批量壓縮打包下載
- php擷取目錄所有檔案並將結果儲存到數組的程式
- php判斷字串是否全英文,純中文,中英文組合的方法
- 強大的PHP 圖片處理類(浮水印、透明度、縮放、銳利化、旋轉、翻轉、剪下、反色)
http://www.bkjia.com/PHPjc/764195.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/764195.htmlTechArticlePHP檔案上傳的處理流程以及涉及到的各方面注意 HTML基礎 通過POST表單方式提交 PHP上傳步驟 用戶端通過HTTP POST方式表單提交 檔案上傳後儲存...