版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本節(jié)主要內(nèi)容文件上傳表單處理上傳文件獲取上傳的文件信息判斷上傳的文件類型用戶頭像上傳功能的實(shí)現(xiàn)文件上傳表單<form>標(biāo)簽的enctype屬性規(guī)定了在提交表單時(shí)要使用哪種內(nèi)容類型,要實(shí)現(xiàn)文件上傳,需將enctype屬性設(shè)置為“multipart/form-data”。實(shí)現(xiàn)文件上傳表單,必須將表單提交方式設(shè)置為post方式。允許用戶上傳文件是一個(gè)巨大的安全風(fēng)險(xiǎn),請(qǐng)僅允許可信的用戶執(zhí)行文件上傳操作。<formmethod=”post”enctype=”mutipart/form-data”>…<inputtype=”file”name=”upload”><inputtype=”submit”></form>上傳文件操作(1)在php.ini配置文件中對(duì)上傳的選項(xiàng)進(jìn)行設(shè)置。(2)對(duì)表單標(biāo)簽進(jìn)行設(shè)置(3)通過$_FILES對(duì)上傳文件做一些限制和判斷。(4)使用move_upload_file()函數(shù)實(shí)現(xiàn)上傳(1)配置php.ini文件選項(xiàng)描述file_uploads如果值是on,說明服務(wù)器支持文件上傳;如果為off,則不支持。upload_tmp_dir上傳文件臨時(shí)目錄。在文件被成功上傳之前,首先被存放到服務(wù)器端的臨時(shí)目錄中,如果沒有設(shè)置,則使用系統(tǒng)默認(rèn)目錄。upload_max_filesize服務(wù)器允許上傳文件的最大值,以MB為單位,系統(tǒng)默認(rèn)為2MB。上傳文件操作(2)對(duì)表單標(biāo)簽進(jìn)行設(shè)置<FORMname=“userForm”enctype="multipart/form-data"method="post">……</FROM>上傳文件操作(3)通過$_FILES對(duì)上傳文件做一些限制和判斷。選項(xiàng)描述$_FILES[filename][name]存儲(chǔ)了上傳文件的文件名,例如head.gif、myDream.jpg等$_FILES[filename][size]存儲(chǔ)了文件大小。單位為字節(jié)$_FILES[filename][tmp_name]文件上傳時(shí),首先在臨時(shí)目錄中被保存成一個(gè)臨時(shí)文件。該變量臨時(shí)文件名。$_FILES[filename][type]上傳文件的類型。$_FILES[filename][error]存儲(chǔ)了上傳文件的結(jié)果,如果返回0,說明上傳成功上傳文件操作(4)使用move_upload_file()函數(shù)實(shí)現(xiàn)上傳boolmove_uploaded_file(stringfilename,stringdestination)獲取上傳的文件信息在PHP獲取上傳文件時(shí),使用二維數(shù)組$_FILES來存儲(chǔ)上傳文件的信息,該數(shù)組的一維保存的是上傳文件的名字,二維保存的是該上傳文件的具體信息echo"上傳文件名稱:".$_FILES["file"]["name"]."<br/>";echo"上傳文件類型:".$_FILES["file"]["type"]."<br/>";echo"上傳文件大小:".($_FILES["file"]["size"]/1024)."Kb<br/>";echo"存儲(chǔ)在:".$_FILES["file"]["tmp_name"];判斷上傳文件類型在系統(tǒng)實(shí)際開發(fā)過程中,經(jīng)常需要對(duì)用戶上傳的文件類型進(jìn)行判斷,例如,上傳頭像時(shí),僅允許用戶上傳jpg,png和gif格式的圖片信息。if(($_FILES["file"]["type"]=="image/gif")||($_FILES["file"]["type"]=="image/jpeg")||($_FILES["file"]["type"]=="image/png")){…}“image/gif”、“image/jpeg”和“image/png”是MIME類型,MIME類型是Internet內(nèi)容類型描述的事實(shí)標(biāo)準(zhǔn),“/”前面的部分表示數(shù)據(jù)的大類別,如圖像image、聲音audio等,后面的部分表示大類型下的具體類型例:文件上傳功能示例創(chuàng)建一個(gè)上傳表單,將上傳文件保存在根目錄下的upfiles文件夾下(注意采用一定的算法保證上傳文件命名的唯一性),并顯示上傳文件的信息。文件上傳功能設(shè)計(jì)思路
檢查上傳文件是否有錯(cuò)誤,有錯(cuò)誤的話根據(jù)錯(cuò)誤類型提示錯(cuò)誤信息。檢查上傳文件大小是否超出大小限制,若超出給出相應(yīng)錯(cuò)誤信息。檢查上傳文件類型是否在規(guī)定的范圍內(nèi),若不是合法文件類型給出相應(yīng)錯(cuò)誤信息。使用move_uploaded_file()函數(shù)將臨時(shí)文件保存到指定的目錄,文件名采用一定算法使得文件名不與現(xiàn)有文件重名。當(dāng)上傳文件失敗時(shí),將錯(cuò)誤信息顯示在網(wǎng)頁中。
測(cè)試表單上傳功能是否能正確上傳文件并將上傳文件信息顯示在網(wǎng)頁中。Ch4_6.php的部分代碼<formmethod="post"enctype="multipart/form-data"action="ch4_6_ok.php"><divclass="tableRow"><p>選擇文件:</p><p><inputtype="file"name="myfile"></p></div><br><br><divclass="tableRow"><p></p><p><inputtype="submit"value="上傳"></p></div></form>Ch4_6_ok.php的代碼分析$myfile=$_FILES['myfile']; if($myfile['error']>0){
$error_msg='上傳錯(cuò)誤';
/*switch($myfile['error']){
case1: case2:
$error_msg="文件大小超出系統(tǒng)限制";break; case3:
$error_msg.='文件只有部分被上傳';break; case4:
$error_msg.='沒有文件被上傳';break; case6:
$error_msg.='找不到臨時(shí)文件夾';break; case7:
$error_msg.='文件寫入失敗';break; default:
$error_msg.='未知錯(cuò)誤';
}*/
代碼分析
if($myfile['size']<50000){
$type=$myfile['type']; $allow_type=array('image/jpeg','image/png','image/gif');
if(in_array($type,$allow_type)){
//為上傳的文件重新命名為時(shí)間戳+隨機(jī)數(shù)+文件類型擴(kuò)展名
$type=substr(strrchr($myfile['name'],'.'),1);
$file=date("YmdHis").rand(100,999).".".$type;
move_uploaded_file($myfile['tmp_name'],"upfiles/".$file);}else{
$error['myfile']='圖像類型不符合要求,允許的類型為:'.implode(",",$allow_type);
}}else{
$error['myfile']='文件大小應(yīng)小于50k';}
運(yùn)行結(jié)果strrchr()和substr()函數(shù)的介紹strrchr()函數(shù)查找字符串在另一個(gè)字符串中最后一次出現(xiàn)的位置,并返回從該位置到字符串結(jié)尾的所有字符。substr(string,start[,length])返回字符串start位置開始長(zhǎng)度為length的一部分。echo(strrchr(‘c:\windows\hosts.txt’,‘.’));//結(jié)果為.txtsubstr(strrchr(‘c:\windows\hosts.txt’,‘.’),1);//結(jié)果為txt
用戶頭像上傳功能的實(shí)現(xiàn)為例4-4中的表單注冊(cè)功能中添加用戶頭像上傳功能,頭像圖片格式要求只能為gif、png或者jpeg三者之一,且要求文件大小不超過50k。設(shè)計(jì)思路:編寫一個(gè)新的用戶注冊(cè)表單,除了包含用戶名、密碼等輸入元素外,添加一個(gè)用于用戶頭像文件上傳的輸入元素。在瀏覽器中訪問用戶注冊(cè)信息,選擇上傳的文件后提交表單。通過PHP接收、處理上傳文件信息。添加新的用戶注冊(cè)表單文件……<formname="regForm"action="ch4_7_ok.php"method="post"enctype="multipart/form-data">……<divclass="tableRow"><p>自定義頭像:</p> <p><inputtype="file"name="myhead"></p>
</div>……用戶注冊(cè)處理頁面……$type=$myhead['type']; $allow_type=array('image/jpeg','image/png','image/gif');if(in_array($type,$allow_type)){
$type=substr(strrchr($myhead['name'],'.'),1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度供應(yīng)鏈管理SaaS平臺(tái)合同2篇
- 二零二五年度房地產(chǎn)項(xiàng)目招投標(biāo)代理合同6篇
- 2025年度消防系統(tǒng)智能化改造與運(yùn)維服務(wù)合同范本3篇
- 二零二五年度教育培訓(xùn)機(jī)構(gòu)入學(xué)合同范本
- 2025年度物業(yè)社區(qū)志愿者服務(wù)管理協(xié)議范本3篇
- 二零二五年度農(nóng)業(yè)項(xiàng)目財(cái)務(wù)支持與合同履約監(jiān)管協(xié)議3篇
- 自動(dòng)控制pd的課程設(shè)計(jì)
- 課文橋課程設(shè)計(jì)
- 二零二五年度房產(chǎn)析產(chǎn)及財(cái)產(chǎn)分配執(zhí)行協(xié)議3篇
- 論文閱讀與審美課程設(shè)計(jì)
- 【高中數(shù)學(xué)課件】排列數(shù)公式的應(yīng)用
- 醫(yī)院搶救領(lǐng)導(dǎo)工作小組制度
- 2024年河南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 2024年國(guó)家公務(wù)員考試《申論》真題(地市級(jí))及答案解析
- 上海市縣(2024年-2025年小學(xué)五年級(jí)語文)人教版摸底考試((上下)學(xué)期)試卷及答案
- 電力市場(chǎng)概論張利課后參考答案
- 2024年道路運(yùn)輸企業(yè)兩類人員安全考核試題庫-上(單選、多選題)
- GB/T 44351-2024退化林修復(fù)技術(shù)規(guī)程
- 反邪教課件大學(xué)
- 2024年-2025年全民“科學(xué)素養(yǎng)提升行動(dòng)”競(jìng)賽考試題庫(含各題型)
- 實(shí)習(xí)護(hù)士匯報(bào)
評(píng)論
0/150
提交評(píng)論