php檔案上傳值函式封裝

2021-09-24 11:54:49 字數 3796 閱讀 3746

筆記

函式的功能

上傳檔案

條件進行判斷a

1.檔案型別?

2.檔案儲存到什麼位置?

3.檔案格式限制?字尾名

4.檔案大小限制?

結果:實現檔案上傳

1.結構能夠看到(記錄檔案路徑和名字都要返回)

2.失敗?返回false,顯示錯誤原因

開始實現:

1.獲取檔案五元素,分別傳入函式中

2.先判斷檔案是否有效(陣列,error值為0)

3.判斷儲存路徑是否有效(is_dir(路徑))

4.判斷檔案上傳的過程中是否有錯誤

(error,error中有許多返回值,使用switch來判斷)

5.判斷mime型別中type(in_array(要查的東西,在**查))

6.檔案格式,就是字尾名字

(strrchr(取末尾),例如(.php,.jpg)

使用ltrim('.php','.')取消左邊的.

rtrim()取消右邊的

再判斷字尾名是否在檔案上傳的檔名裡

不允許為空empty()

)7.檔案大小處理

大於最大檔案大小

8.移動到指定目錄

判斷是否為臨時上傳檔案然後在移動

(is_uploaded_file

move_uloaded_file

)9.命名衝突處理:上傳同名檔案?中文??

構造乙個檔案名字

型別_年月日+隨機數字+隨機數

strstr(字串,'要找的字元',true)

date('yyyymmdd')

隨機字串

mt_rand(1,2)

chr(乙個二進位制)轉換為對應的字元

對應的html使用post的上傳

//以下**是用來逐步進行判斷

array (

[image] => array (

[name] => 無標題.jpg

[type] => image/jpeg

[tmp_name] => c:\temp\php5ffe.tmp

[error] => 0

[size] => 12435

) )

<?php

//單檔案

header('content_type:text/html;charset=utf-8');

function upload_single($file,$allow_type,$path,&$error,$allow_format=array(),$max_size=2000000)

//檔案儲存的位置

if(!is_dir($path))

//檔案上傳過程中是否有錯誤

switch($file['error'])

//判斷mime型別中type

if(!in_array($file['type'],$allow_type))

//判斷檔案格式

$ext=ltrim(strrchr($file['name'],'.'),'.');

if(!empty($allow_format) && !in_array($ext,$allow_format))

//判斷檔案大小是否滿足當前允許的大小

if($file['size'] > $max_size)

//構造檔名:型別_年月日+隨機字元.ext

//true是前半部分,false是後半部分

$fullname=strstr($file['type'],'/',true).date('yyyymmdd');

//產生隨機字串

//chr()二進位制轉字串

for($i=0;$i<4;$i++)

//新增字尾

$fullname .= '.'.$ext;

//移動指定目錄

?>

03.php很多的注釋

<?php

/*判斷是不是空檔案,有效檔案 $file

判斷型別是不是我們允許上傳的型別 $type

判斷位置,檔案存放的位置是不是存在 $path

判斷error這個返回值是多少 &$error

判斷字尾 $ext

判斷檔案大小 $max_size

*/function uploadset($file,$type,$path,&$error,$ext=array(),$max_size=20000)

//判斷檔案路徑

if(is_dir($path))

//判斷返回值error

switch ($error)

//判斷上傳型別type

if(!in_array($file['type'],$type))

//判斷字尾$ext

//$i_ext=strrchr($file['name'],'.');//結果是從.開始獲取(.***)

//$i_ext=ltrim($i_ext,'.');//從左側刪除'.' 結果為***

$i_ext=ltrim(strrchr($file['name'], '.'),'.');

//開始判斷,上傳的字尾名是不是在允許的陣列裡面 並且 判斷是不是空的

if(!in_array($i_ext,$ext) && !empty($i_ext))

//判斷大小

//使用實際的檔案大小與允許的大小比較

if($file['size'] > $max_size)

//以上,完成了檔案五大元素的判斷

//通過的,都是沒問題的可以進行檔案移動

//可以進行檔名稱的構造

//型別_年月日+隨機字元.ext

//strstr(要擷取的字元,從哪個字元開始,true是從第二個引數的前半段)

//獲取了image/jpg中的前半段image

$newname=strstr($file['type'],'/',true).date('yyyymmdd');

//在後面新增隨機字元

for($i=0;$i<4;$i++)

//新增字尾

$newname .= '.'.$i_ext;

//檔案移動

php檔案上傳函式封裝

上傳檔案呼叫 file files image 允許上傳的型別 檔案的上傳 param array file 上傳的檔案的相關資訊 是乙個陣列有五個元素 param array allow 允許檔案上傳的型別 param string error 引用傳遞,用來記錄錯誤的資訊 param strin...

php封裝檔案上傳函式

created by phpstorm.user 17839 date 2020 3 23 time 10 54 header content type text html charset utf 8 檔案上傳 param file 接受的檔案 files file param mime 允許上傳檔...

PHP檔案上傳封裝成函式

header content type text html charset utf 8 檔案上傳封裝函式 param1 array file 上傳的檔案資訊 5屬性元素陣列 param2 array allow type 允許上傳的mime型別 param3 string path 儲存的路徑 pa...