国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

php文件上傳的步驟

檔案上傳的步驟

為了更好的學(xué)習(xí)PHP,我們將極為複雜的PHP的檔案上傳歸納總結(jié)成為了6個(gè)步驟。

在實(shí)際使用過(guò)程中,你依照這6個(gè)步驟就能夠很好的完成PHP的檔案上傳:

一、判斷是否有錯(cuò)誤碼


#系統(tǒng)傳回的錯(cuò)誤碼詳解:

找不到暫存資料夾,可能目錄不存在或沒(méi)權(quán)限
錯(cuò)誤碼說(shuō)明
0#無(wú)誤,可以繼續(xù)進(jìn)行檔案上傳的後續(xù)操作。
1超出上傳檔案的最大限制,upload_max_filesize = 2M php.ini中設(shè)置,一般預(yù)設(shè)為2M??梢缹0钢械膶?shí)際需求來(lái)修改
2超出了指定的檔案大小,根據(jù)專案的業(yè)務(wù)需求指定上傳檔案的大小限制
3只有部分檔案上傳
#4檔案沒(méi)有上傳
##6
#######7######檔案寫(xiě)入失敗,可能磁碟滿了或沒(méi)有權(quán)限############


註:錯(cuò)誤碼中沒(méi)有5。

二、自訂判斷是否超出檔案大小範(fàn)圍

在開(kāi)發(fā)上傳功能時(shí)。我們作為開(kāi)發(fā)人員,除了php.ini中規(guī)定的上傳的最大值外。

我們通常也會(huì)設(shè)定一個(gè)值,是業(yè)務(wù)規(guī)定的上傳大小限制。

例如:
新浪微博或QQ空間只準(zhǔn)單張頭像圖片2M。而在上傳圖冊(cè)的時(shí)候又可以超過(guò)2M來(lái)上傳。

所以說(shuō),它的系統(tǒng)是支援更大檔案上傳的。

此處的判斷檔案大小,我們用來(lái)限制實(shí)際業(yè)務(wù)中我們想要規(guī)定的上傳的檔案大小。

三、判斷字尾名和mime型別是否符合

在網(wǎng)路世界裡面也有壞人。他們會(huì)把圖片插入病毒,在附件中上傳病毒,他們會(huì)在網(wǎng)頁(yè)中插入病毒或黃色圖片。

我們需要對(duì)於上傳的檔案後綴和mime類型都要進(jìn)行判斷才可以。

MIME(Multipurpose Internet Mail Extensions)是多用途互聯(lián)網(wǎng)郵件擴(kuò)充類型。是設(shè)定某種副檔名的檔案用一種應(yīng)用程式來(lái)開(kāi)啟的方式類型,當(dāng)該副檔名檔案被存取的時(shí)候,瀏覽器會(huì)自動(dòng)使用指定應(yīng)用程式來(lái)開(kāi)啟。多用於指定一些客戶端自訂的檔案名,以及一些媒體檔案開(kāi)啟方式。

在判斷後綴和MIME類型的時(shí)候,我們會(huì)用到PHP的一個(gè)函數(shù)in_array(),該函數(shù)傳入兩個(gè)參數(shù)。
第一個(gè)參數(shù)是要判斷的值;
第二個(gè)參數(shù)是範(fàn)圍陣列。

我們用這個(gè)函數(shù)來(lái)判斷檔案的後綴名稱和mime類型是否在允許的範(fàn)圍內(nèi)。

四、產(chǎn)生檔名

我們的檔案上傳成功了,不會(huì)讓它儲(chǔ)存原名。
因?yàn)椋行┤嗽谠杏忻舾嘘P(guān)鍵字會(huì)違反我國(guó)的相關(guān)法律和法規(guī)。

我們可以採(cǎi)用date()、mt_rand()或unique()產(chǎn)生隨機(jī)的檔案名稱。

五、判斷是否是上傳檔案

檔案上傳成功時(shí),系統(tǒng)會(huì)將上傳的暫存檔案上傳到系統(tǒng)的暫存目錄中。產(chǎn)生一個(gè)臨時(shí)文件。

同時(shí)會(huì)產(chǎn)生暫存檔案名稱。我們需要做的事情是將臨時(shí)檔案移到系統(tǒng)的指定目錄中。

而移動(dòng)前不能瞎移動(dòng),或是移動(dòng)錯(cuò)了都是不科學(xué)的。移動(dòng)前我們需要使用相關(guān)函數(shù)判斷上傳的檔案是不是暫存檔案。

is_uploaded_file()傳入一個(gè)參數(shù)($_FILES中的快取檔案名稱),判斷傳入的名稱是不是上傳檔案。

六、移動(dòng)臨時(shí)文件到指定位置

臨時(shí)文件是真實(shí)的臨時(shí)文件,我們需要將其移動(dòng)到我們的網(wǎng)站目錄下面了。

讓我們網(wǎng)站目錄的數(shù)據(jù),其他人可以存取。

我們使用:move_uploaded_file()。
這個(gè)函數(shù)是將上傳檔案移到指定位置,並命名。
傳入兩個(gè)參數(shù):
第一個(gè)參數(shù)是指定移動(dòng)的上傳檔案;
第二個(gè)參數(shù)是指定的資料夾和名稱拼接的字串。


繼續(xù)學(xué)習(xí)
||
<form action="" enctype="multipart/form-data" method="post" name="uploadfile">上傳文件:<input type="file" name="upfile" /><br> <input type="submit" value="上傳" /></form> <?php //print_r($_FILES["upfile"]); if(is_uploaded_file($_FILES['upfile']['tmp_name'])){ $upfile=$_FILES["upfile"]; //獲取數(shù)組里面的值 $name=$upfile["name"];//上傳文件的文件名 $type=$upfile["type"];//上傳文件的類型 $size=$upfile["size"];//上傳文件的大小 $tmp_name=$upfile["tmp_name"];//上傳文件的臨時(shí)存放路徑 //判斷是否為圖片 switch ($type){ case 'image/pjpeg':$okType=true; break; case 'image/jpeg':$okType=true; break; case 'image/gif':$okType=true; break; case 'image/png':$okType=true; break; } if($okType){ /** * 0:文件上傳成功<br/> * 1:超過(guò)了文件大小,在php.ini文件中設(shè)置<br/> * 2:超過(guò)了文件的大小MAX_FILE_SIZE選項(xiàng)指定的值<br/> * 3:文件只有部分被上傳<br/> * 4:沒(méi)有文件被上傳<br/> * 5:上傳文件大小為0 */ $error=$upfile["error"];//上傳后系統(tǒng)返回的值 echo "================<br/>"; echo "上傳文件名稱是:".$name."<br/>"; echo "上傳文件類型是:".$type."<br/>"; echo "上傳文件大小是:".$size."<br/>"; echo "上傳后系統(tǒng)返回的值是:".$error."<br/>"; echo "上傳文件的臨時(shí)存放路徑是:".$tmp_name."<br/>"; echo "開(kāi)始移動(dòng)上傳文件<br/>"; //把上傳的臨時(shí)文件移動(dòng)到up目錄下面 move_uploaded_file($tmp_name,'up/'.$name); $destination="up/".$name; echo "================<br/>"; echo "上傳信息:<br/>"; if($error==0){ echo "文件上傳成功啦!"; echo "<br>圖片預(yù)覽:<br>"; echo "<img src=".$destination.">"; //echo " alt=\"圖片預(yù)覽:\r文件名:".$destination."\r上傳時(shí)間:\">"; }elseif ($error==1){ echo "超過(guò)了文件大小,在php.ini文件中設(shè)置"; }elseif ($error==2){ echo "超過(guò)了文件的大小MAX_FILE_SIZE選項(xiàng)指定的值"; }elseif ($error==3){ echo "文件只有部分被上傳"; }elseif ($error==4){ echo "沒(méi)有文件被上傳"; }else{ echo "上傳文件大小為0"; } }else{ echo "請(qǐng)上傳jpg,gif,png等格式的圖片!"; } } ?>
提交重置程式碼