學習PHP文件上傳

我們在學習PHP文件上傳之前,先了解三個步驟:

第一:學習如何控制上傳文件(配置php.ini文件);

第二:學習對上傳文件的判斷(判斷上傳文件的格式和大小);

第三:學習文件上傳操作的方法.

(一)瞭解php.ini文件中文件上傳的配置信息

PHP中通過php.ini文件對上傳文件進行控制,包括:是否支持上傳,上傳文件的臨時目錄,上傳文件的大小,指令執行的時間,指令分配的內存空間.

##############

##File Uploads##

##############

#Whether to allow HTTP file uploads.

file_uploads = On

[註釋]file_uploads:如果值是on.說明服務器支持文件上傳;如果爲off,則不支持.一般默認是支持的,這個不用修改.

#Temporary directory for HTTP uploaded files (will use system default if not specified).

upload_tmp_dir = "H:\XAMPP\xampp\tmp"

[註釋]upload_tmp_dir:上傳文件臨時目錄.在文件被成功上傳之前,文件首先被存放到服務器端的臨時目錄中.多數使用系統默認目錄,但是也可以自行設置.

#Maximum allowed size for uploaded files

upload_max_filesize = 128M

#[註釋]upload_max_filesize:服務器允許上傳文件的最大值,以M爲單位.系統默認爲128M,如果網站上需要限制上傳的數據,那麼要修改這個值.

上述是php中關於File_Uploads項中與上傳相關選項參數設置說明,除了File_Uploads項的內容外,在php.ini中還有其他幾個選項會影響文件的上傳.

#################

##Resource Limits##

#################

#Maximum execution time of each script ,in seconds

max_execution_time = 60

#[註釋]PHP中一個指定所要執行的最大時間,單位爲秒.該選項在上傳超大文件時必須要修改,否則即使上傳文件在服務器允許範圍內,但是超過了指令所要執行的最大時間,仍然無法實現上傳.

#Maximum amount of memory a script may consume (128MB)

memory_limit = 128M

#[註釋]memory_limit: PHP中一個指令所要分配的內存空間,單位是M.它的大小同樣會影響超大文件的上傳.

第二:如何對上傳文件進行解析(判斷上傳文件的格式和大小);

對文件上傳進行判斷應用的是全局變量$_FILES,它是一個數組,它包含所有上傳的文件信息.

1)$_FILES[filename][name]  存儲上傳文件的文件名.

2)$_FILES[filename][size] 存儲文件的大小.單位爲字節.

3)$_FILES[filename][tmp_name] 存儲文件在臨時目錄中使用的文件名.

4)$_FILES[filename][type] 存儲上傳文件的MIME類型,MIME類型規定各種文件格式的類型.

5)$_FILES[filename][error] 存儲於文件上傳相關的錯誤代碼,其返回值有5中. 0:表示沒有任何錯誤,文件上傳成功....

第三:如何進行文件上傳操作

PHP中應用move_uploaded_file()函數實現文件上傳.但是,在執行文件上傳之前,爲了防止潛在的攻擊對原本不能通過腳本交互的文件進行非發管理,可以先應用is_uploaded_file()函數進行判斷指定文件是否是通過HTTP POST上傳的,如果是則返回值true,可以繼續執行文件上傳操作,否則將不能夠繼續執行.

1: is_uploaded_file()函數用於判斷指定的文件是否是通過HTTP POST上傳的.

語法: bool is_uploaded_file(string filename)

參數filename必須指定類似於$_FILES['filename']['tmp_name']的變量,不可以使用從客戶端上傳的文件名$_FILES['filename']['name'].

[注]通過is_uploaded_file()函數對上傳文件進行判斷,可以確保惡意的用戶無法欺騙腳本去訪問不能訪問的文件.

2:move_loaded_file()函數將指定的文件上傳服務器中指定的位置.如果成功返回true,否則返回false.

語法: bool_uploaded_file(string filename,string destination)

參數filename指定上傳文件的臨時文件名,即$_FILES[tmp_name];參數destination指文件上傳後保存的新路徑和名稱.




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章