1. 先判斷是否上傳文件
2. 如果有再來判斷上傳中是否出錯(cuò)
3. 如果出錯(cuò),則提示出錯(cuò)信息
4. 如查沒出錯(cuò),再判斷文件類型
5. 如果類型符合條件,再判斷指定目錄中有沒有存在該文件
6. 如果沒有就把該文件移至指定目錄
在php中上傳文件必須知道的幾個(gè)東西
$_FILES['myfile']['name'] 是指被上傳文件的名稱
$_FILES['myfile']['type'] 是指被上傳文件的類型
$_FILES['myfile']['size'] 是指被上傳文件的大小,單位為字節(jié)(B)
$_FILES['myfile']['tmp_name'] 是指被上傳文件存在服務(wù)器中的臨時(shí)副本文件名稱,文件被移動(dòng)到指定目錄后臨文件將被自動(dòng)消毀。
$_FILES['myfile']["error"] 是指由文件上傳中有可能出現(xiàn)的錯(cuò)誤的狀態(tài)碼,關(guān)于各狀態(tài)含義后在會(huì)說明。
先來看一下HTML部分。
說明:
form標(biāo)答的action="upload.php"是指點(diǎn)擊這個(gè)form中的submit的時(shí)候,這個(gè)上傳命令會(huì)被發(fā)送到這個(gè)叫 upload.php的頁面去處理。method="post"是指以post方式去送,enctype="multipart/form-data"屬性規(guī)定了在提交這個(gè)表單時(shí)要使用哪種內(nèi)容類型,在表單需要二進(jìn)制數(shù)據(jù)時(shí),比如文件內(nèi)容,請(qǐng)使用"multipart/form-data",如果要上傳文件,這個(gè)屬性是必要的。input中的type="file"時(shí),規(guī)定了應(yīng)該把輸入作為文件來處理,并且在input后面會(huì)有一個(gè)瀏覽的按鈕。
我們?cè)賮砜匆粋€(gè)PHP處理頁面 upload.php
上面超級(jí)簡單,我們現(xiàn)在來升級(jí)一下
1、upload.php
2、uploadProcess.php
注意:
我舉個(gè)例子大家就知道,比如一個(gè)圖片文件 pic.jpg,我們用 strrchr處理,strrchr(pic.jpg,'.'),它將返回.jpg,明白了嗎?該函數(shù)返回指定字符在該字符串最后出現(xiàn)的位置后的字符。配合 substr() 我們就可以取到j(luò)pg,這樣我們就得到了文件的后綴名,來判斷上傳文件是否符合指定格式。本程序把指定的格式放在一個(gè)數(shù)組中,實(shí)際使用時(shí)可根據(jù)需要添加。
接下來看產(chǎn)生隨機(jī)數(shù)文件名部分, 我們看到mt_srand()這個(gè)函數(shù),手冊(cè)上叫他“播下一個(gè)更好的隨機(jī)數(shù)發(fā)生器種子”,其實(shí)就是初始化一個(gè)隨機(jī)數(shù)的函數(shù),參數(shù)是(double)microtime() * 1000000,這里如果不這是參數(shù)就會(huì)自動(dòng)設(shè)置個(gè)隨機(jī)數(shù),當(dāng)然這不符合我們的需要,如此一來,隨機(jī)數(shù)就具備一定的長度,保證了上傳文件不重名
新聞熱點(diǎn)
疑難解答