筆記
函式的功能
上傳檔案
條件進行判斷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...