詳細描述PHP處理web上傳文件的流程,如何限制上傳文件的大小不能超過某個數(shù)值?
1.流程:首先用戶在瀏覽器端選擇上傳的文件,提交后,通過post方式上傳到服務(wù)器由php引擎處理判斷文件是否能夠上傳到php配置文件中指定的臨時目錄,之后獲取文件后綴名判斷文件是否是允許上傳的文件格式,如果沒問題,則按照隨機數(shù)+時間的方式生成文件的名字+后綴。最后將文件從臨時目錄轉(zhuǎn)移至Apache服務(wù)器目錄。
2.在php配置文件中 有一個upload_max_filesize 設(shè)置其值就可以限制上傳文件大小
可以在php.ini文件中的upload_max_filesize = 某值 設(shè)置上傳文件大小,同時也可以在表單中$_FILES['name']['size']限制文件大小,以及服務(wù)器配置中也要設(shè)置上傳文件的大小和上傳時間。
3.同時如果是nginx服務(wù)器,也要設(shè)置其上傳文件的大小限制, client_max_body_size 10m; 如果需要經(jīng)過代理服務(wù)器,則代理服務(wù)器也同樣需要設(shè)置上傳大小配置;
在PHP中,當(dāng)瀏覽器客戶端提交過來的表單請求中包含上傳的文件時,PHP會將上傳的文件先暫時存放在臨時目錄中(在Windows操作系統(tǒng)中,默認的臨時目錄一般為C:/Windows/Temp),然后將上傳文件的相關(guān)信息存放在超全局變量$_FILES中。因此,我們只需要通過$_FILES數(shù)組獲取上傳的文件信息,然后對其進行相應(yīng)的處理操作即可。
1.file_uploads
設(shè)為On,允許通過HTTP上傳文件
2.upload_tmp_dir
文件上傳至服務(wù)器時用于臨時存儲的目錄,如果沒指定,系統(tǒng)會使用默認的臨時文件夾(我的機器是/tmp)。
3.upload_max_filesize
允許上傳文件大小的最大值,默認為2M。
4.post_max_size
php可接收的post數(shù)據(jù)的最大值(包括表單里的所有值的總合),默認為8M。
5.memory_limit
每個php所占的最大內(nèi)存數(shù),這個值要大于允許上傳的文件大小。
6.max_execution_time
每個php運行的最長時間(秒),默認30秒。
7.max_input_time
php解析POST/GET數(shù)據(jù)的最長時間(秒),默認60秒。