版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——PHP實(shí)現(xiàn)文件上傳和多文件上傳PHP實(shí)現(xiàn)文件上傳和多文件上傳
PHP實(shí)現(xiàn)文件上傳和多文件上傳的相關(guān)資料,還為大家共享了解決如何修改PHP上傳文件的大小限制問(wèn)題的方法,需要的摯友可以參考下。
在PHP程序開(kāi)發(fā)中,文件上傳是一個(gè)使用分外普遍的功能,也是PHP程序員的必備技能之一。值得欣喜的是,在PHP中實(shí)現(xiàn)文件上傳功能要比在Java、C#等語(yǔ)言中簡(jiǎn)樸得多。下面我們結(jié)合概括的代碼實(shí)例來(lái)細(xì)致介紹如何通過(guò)PHP實(shí)現(xiàn)文件上傳和多文件上傳功能。
要使用PHP實(shí)現(xiàn)文件上傳功能,我們先來(lái)編寫(xiě)兩個(gè)php文件:index.php和upload.php。其中,index.php頁(yè)面用于提交文件上傳的表單苦求,upload.php頁(yè)面用于接收上傳的文件并舉行相應(yīng)處理。
首先,我們來(lái)編寫(xiě)一個(gè)簡(jiǎn)樸的index.php文件,由于其中涉及的主要是html代碼,對(duì)比簡(jiǎn)樸,因此不再贅述,index.php頁(yè)面的細(xì)致代碼如下:
?php
//設(shè)置編碼為UTF-8,以制止中文亂碼
headerContent-Type:text/html;charset=utf-8;
?
!DOCTYPEhtml
html
head
title文件上傳表單頁(yè)面/title
/head
body
formaction=upload.phpmethod=postenctype=multipart/form-data
文件1:inputname=upload_file1type=file/br/
文件2:inputname=upload_file2type=file/br/
inputtype=submitvalue=上傳/
/form
/body
/html
值得留神的是,由于在HTTP協(xié)議設(shè)計(jì)之初,它并不支持文件上傳功能,form表單的encrypt屬性的默認(rèn)值為application/x--form-urlencoded,它只能用于提交一般的表單苦求。假設(shè)提交的表單中包含需要上傳的文件,我們需要將enctype的屬性值改為multipart/form-data才能實(shí)現(xiàn)文件上傳功能。此外,method的屬性值務(wù)必為post。
接著,我們持續(xù)編寫(xiě)upload.php文件的代碼。
?php
//設(shè)置編碼為UTF-8,以制止中文亂碼
headerContent-Type:text/html;charset=utf-8;
$first_file=$_FILES[upload_file1];//獲取文件1的信息
$second_file=$_FILES[upload_file2];//獲取文件2的信息$upload_dir=D:/upload/;//保存上傳文件的目次//處理上傳的文件1
if$first_file[error]==UPLOAD_ERR_OK
//上傳文件1在服務(wù)器上的臨時(shí)存放路徑
$temp_name=$first_file[tmp_name];
//上傳文件1在客戶(hù)端計(jì)算機(jī)上的真實(shí)名稱(chēng)
$file_name=$first_file[name];
//移動(dòng)臨時(shí)文件夾中的文件1到存放上傳文件的目次,并重命名為真實(shí)名稱(chēng)
move_uploaded_file$temp_name,$upload_dir.$file_name;
echo[文件1]上傳告成!br/;
else
echo[文件1]上傳失敗!br/;
//處理上傳的文件2
if$second_file[error]==UPLOAD_ERR_OK
//上傳文件2在服務(wù)器上的臨時(shí)存放路徑
$temp_name=$second_file[tmp_name];
//上傳文件2在客戶(hù)端計(jì)算機(jī)上的真實(shí)名稱(chēng)
$file_name=$second_file[name];
//移動(dòng)臨時(shí)文件夾中的文件2到存放上傳文件的目次,并重命名為真實(shí)名稱(chēng)
move_uploaded_file$temp_name,$upload_dir.$file_name;
echo[文件2]上傳告成!br/;
else
echo[文件2]上傳失敗!br/;
?
在PHP中,當(dāng)欣賞器客戶(hù)端提交過(guò)來(lái)的表單苦求中包含上傳的文件時(shí),PHP會(huì)將上傳的`文件先暫時(shí)存放在臨時(shí)目次中在Windows操作系統(tǒng)中,默認(rèn)的臨時(shí)目次一般為C:/Windows/Temp,然后將上傳文件的相關(guān)信息存放在超全局變量$_FILES中。因此,我們只需要通過(guò)$_FILES數(shù)組獲取上傳的文件信息,然后對(duì)其舉行相應(yīng)的處理操作即可。下面,我們來(lái)看看通過(guò)欣賞器上傳A.gif和B.gif兩個(gè)圖片文件時(shí),使用print_r函數(shù)輸出超全局變量$_FILES的細(xì)致信息:
Array[upload_file1]=Array
PHP實(shí)現(xiàn)文件上傳和多文件上傳
[name]=A.gif客戶(hù)端上傳時(shí)的真實(shí)文件名稱(chēng)
[type]=image/gif文件的類(lèi)型
[tmp_name]=C:\Windows\Temp\php9803.tmp文件上傳到PHP服務(wù)器后臨時(shí)存放的路徑
[error]=0錯(cuò)誤信息,0表示沒(méi)有錯(cuò)誤
[size]=87123文件大小,單位為字節(jié)
[upload_file2]=Array
[name]=B.gif
[type]=image/gif
[tmp_name]=C:\Windows\Temp\php9813.tmp
[error]=0
[size]=93111
在上面的例子中,我們上傳的兩個(gè)文件參數(shù)名分別為upload_file1和upload_file2?,F(xiàn)在,我們讓表單中的多個(gè)文件以一致的參數(shù)名upload_file,將方才上傳的兩個(gè)文件以參數(shù)數(shù)組形式再次提交上傳。此時(shí),我們需要將index.php頁(yè)面中的兩個(gè)file文件域修改為如下html代碼:
文件1:inputname=upload_file[]type=file/br/
文件2:inputname=upload_file[]type=file/br/
此外,我們還需要對(duì)upload.php頁(yè)面舉行相應(yīng)的修改:
?php
//設(shè)置編碼為UTF-8,以制止中文亂碼
headerContent-Type:text/html;charset=utf-8;
$fileArray=$_FILES[upload_file];//獲取多個(gè)文件的信息,留神:這里的鍵名不包含[]
$upload_dir=D:/upload/;//保存上傳文件的目次
foreach$fileArray[error]as$key=$error
if$error==UPLOAD_ERR_OK//PHP常量UPLOAD_ERR_OK=0,表示上傳沒(méi)有出錯(cuò)
$temp_name=$fileArray[tmp_name][$key];
$file_name=$fileArray[name][$key];
move_uploaded_file$temp_name,$upload_dir.$file_name;
echo上傳[文件.$key.]告成!br/;
else
echo上傳[文件.$key.]失敗!br/;
?
同樣的,我們使用print_r函數(shù)來(lái)查看上面例子中的超全局變量$_FILES的細(xì)致信息:
Array
[upload_file]=Array
[name]=Array
[0]=A.gif
[1]=B.gif
[type]=Array
[0]=image/gif
[1]=image/gif
[tmp_name]=Array
[0]=C:\Windows\Temp\php87B9.tmp
[1]=C:\Windows\Temp\php87BA.tmp
[error]=Array
[0]=0
[1]=0
[size]=Array
[0]=87123
[1]=93111
備注1:在PHP的默認(rèn)配置下,上傳的文件大小超出確定的范圍將會(huì)出錯(cuò),請(qǐng)參文末提到的如何修改PHP上傳文件的大小限制問(wèn)題的解決方法。
備注2:上述處理文件上傳的PHP代碼只是一個(gè)簡(jiǎn)樸的入門(mén)例如,并不能直接作為正式代碼使用,由于還有大量需要額外留神的安好因素沒(méi)有考慮,例如:文件的類(lèi)型、文件的大小以及上傳文件的名稱(chēng)重復(fù)等。
備注3:假設(shè)上傳的文件名稱(chēng)中包含中文,可能引起文件名稱(chēng)亂碼問(wèn)題。此時(shí),需要使用函數(shù)iconv來(lái)轉(zhuǎn)換文件名稱(chēng)的編碼。
前面我們了解了如何使用PHP實(shí)現(xiàn)文件上傳和多文件上傳。不過(guò),在PHP的默認(rèn)配置處境下,當(dāng)上傳的文件大小超出確定的限制時(shí),我們將得到如下的錯(cuò)誤提示信息:
Warning:POSTContent-Lengthof625523488bytesexceedsthelimitof8388608bytesinUnknownonline0
上述錯(cuò)誤信息的大致意思是,我們使用POST苦求提交的數(shù)據(jù)大小超過(guò)了服務(wù)器的最大限制數(shù)8388608字節(jié)=8MB。
展現(xiàn)上述錯(cuò)誤的理由是,在PHP的配置文件php.ini中,默認(rèn)存在如下配置信息在php.ini中,行首的分號(hào);表示當(dāng)前行是解釋?zhuān)粫?huì)生效:
;腳本解析輸入數(shù)據(jù)類(lèi)似POST和GET允許的最大時(shí)間,單位是秒。它從接收全體數(shù)據(jù)到開(kāi)頭執(zhí)行腳本舉行測(cè)量的。
max_input_time=60
;允許客戶(hù)端單個(gè)POST苦求發(fā)送的最大數(shù)據(jù)
post_max_size=8M
;是否開(kāi)啟文件上傳功能
file_uploads=On
;文件上傳的臨時(shí)存放目次假設(shè)不指定,使用系統(tǒng)默認(rèn)的臨時(shí)目次
;upload_tmp_dir=
;允許單個(gè)苦求上傳的最大文件大小
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年一級(jí)醫(yī)院護(hù)理工作計(jì)劃怎么寫(xiě)
- 2025二級(jí)建造師b證真題答案詳解
- 公司2026年安全生產(chǎn)工作計(jì)劃
- 2025年聚苯醚(PPO)及合金項(xiàng)目合作計(jì)劃書(shū)
- 第2章 簡(jiǎn)單事件的概率期末復(fù)習(xí)(知識(shí)清單)(答案版)-浙教版(2024)九上
- 2025年家用空氣調(diào)節(jié)器項(xiàng)目建議書(shū)
- 味覺(jué)和嗅覺(jué)的課件
- 動(dòng)脈栓塞護(hù)理查房
- 2025年便攜式地質(zhì)雷達(dá)項(xiàng)目建議書(shū)
- 2025年燈具配附件:觸點(diǎn)項(xiàng)目發(fā)展計(jì)劃
- 如果歷史是一群喵16
- 赫茲伯格-雙因素理論
- 華為HCIA存儲(chǔ)H13-611認(rèn)證培訓(xùn)考試題庫(kù)(匯總)
- 社會(huì)主義發(fā)展史知到章節(jié)答案智慧樹(shù)2023年齊魯師范學(xué)院
- 美國(guó)史智慧樹(shù)知到答案章節(jié)測(cè)試2023年?yáng)|北師范大學(xué)
- GB/T 15924-2010錫礦石化學(xué)分析方法錫量測(cè)定
- GB/T 14525-2010波紋金屬軟管通用技術(shù)條件
- GB/T 11343-2008無(wú)損檢測(cè)接觸式超聲斜射檢測(cè)方法
- GB/T 1040.3-2006塑料拉伸性能的測(cè)定第3部分:薄膜和薄片的試驗(yàn)條件
- 教師晉級(jí)專(zhuān)業(yè)知識(shí)和能力證明材料
- 申報(bào)專(zhuān)業(yè)技術(shù)職稱(chēng)課件-
評(píng)論
0/150
提交評(píng)論