php 支持多文件上傳
Jun 08, 2016 pm 05:32 PM
/**
*TTR上傳類
*2007-09-22
*[url=http://www.gx3.cn/]http://www.Gx3.cn[/url]
*QQ:252319874
**/
class?TTRUpload?extends?Error
{
????????const?filesize=81200000;
????????private?$uploadpath="uploadfile/";
????????private?$savepath=null;
????????private?$uploadfilename=null;????????????????????????????????//單個文件為文件名,批量文件為xxxx|xxxx格式,請注意
????????private?$ext=array("jpg","gif","png");
????????private?$error=null;
????????private?$file=null;????????
????????private?$uploadtype=null;
????????private?$filename=null;
????????
????????//構(gòu)造函數(shù),$type:ONE單個上傳?ANY批量上傳;
????????public?function?__construct($file,$type="ONE")
????????{
????????????????if($type!="ONE"?&&?$type!="ANY")
????????????????{
????????????????????????echo "";
????????????????????????退出;
????????????????}
????????????????$這個->上傳類型=$type;
????????????????$這個->文件=$文件;
????????}
????????
????????私有函數(shù)createFileName()
????????{
????????????????返回$這個->文件名="TTR_"。時間()。$這個->getRandomN(4);
????????}
????????????????
????????私有函數(shù)getUploadPath()
????????{
????????????????if(substr($this->上傳路徑,-1,1)!="/")
????????????????{
????????????????????????$這個->保存路徑=$這個->上傳路徑."/".日期("Ym “);
????????????????}其他{
????????????????????????$這個->保存路徑=$這個->上傳路徑.日期("Ym");
????????????????}
????????????????$這個->保存路徑=$這個->getFolder($this->保存路徑);
????????????????返回true;
????????}
????????
????????私有函數(shù)getFileExt($tempfilename)
????????{
????????????????返回?結(jié)束(爆炸(".",$tempfilename));
????????}
????????
????????私有函數(shù)getExt()
????????{
????????????????if(in_array(strtolower($this-> getFileExt($tempfilename)),$this->ext))
????????????????{
????????????????????????返回true;
????????????????}其他{
????????????????????????返回假;????????
????????????????}
????????}
????????
????????私有函數(shù)getFolder($folder)
????????{
????????????????if(!is_dir($folder))
????????????????{
????????????????????????mkdir($文件夾);
????????????????}
????????????????返回$文件夾。"/";
????????}
????????
????????
????????公共函數(shù)上傳()
????????{
????????????????if($這個->上傳類型=="ONE")
????????????????{
????????????????????????
????????????????????????if($this->getExt($this-> 文件["類型"]))
????????????????????????{
????????????????????????????????
????????????????????????????????父級::errorExt();
????????????????????????????????
????????????????????????}else if($這個->文件["大小" ]>自身::文件大小){
????????????????????????????????
????????????????????????????????父級::errorFileSize();
????????????????????????????????
????????????????????????}else if(!$this->getUploadPath()){
????????????????????????????????
????????????????????????????????父級::errorUploadPath();
????????????????????????????????
????????????????????????}其他{
????????????????????????????????$filenametemp=$這個->createFileName();
????????????????????????????????$文件名=$這個->保存路徑.$filenametemp.".".$this-> getFileExt($this->文件["名稱"]);
????????????????????????????????if(move_uploaded_file($這個->文件[ "tmp_name"],$文件名))
????????????????????????????????{????????
????????????????????????????????????????$這個->上傳文件名=$filenametemp;
????????????????????????????????????????父級::確定已移動();????????????????????????
????????????????????????????????????????
????????????????????????????????
????????????????????????????????}其他{
????????????????????????????????????????父級::errorMoveUpload();
????????????????????????????????}
????????????????????????}
????????????????}else if($這個->上傳類型=="任意"){
????????????????????????for($i=0;$i 計數(shù)($這個->文件);$我)
????????????????????????{
????????????????????????
????????????????????????????????if($this->getExt($this-> 文件[$i]["類型"]))
????????????????????????????????{
????????????????????????????????????????父級::errorExt();
????????????????????????????????????????
????????????????????????????????}else if($這個->文件[$i] [“大小”]>自身::文件大小 ){
????????????????????????????????????????
????????????????????????????????????????父級::errorFileSize();
????????????????????????????????????????
????????????????????????????????}else if(!$this->getUploadPath()){
????????????????????????????????????????
????????????????????????????????????????父級::errorUploadPath();
????????????????????????????????????????
????????????????????????????????}其他{
????????????????????????????????????????$filenametemp=$這個->createFileName();
????????????????????????????????????????$文件名=$這個->保存路徑.$filenametemp.".".$this-> getFileExt($this->文件[$i ]["姓名"]);
????????????????????????????????????????if(move_uploaded_file($這個->文件[ $i]["tmp_name"],$文件名 ))
????????????????????????????????????????{????????
????????????????????????????????????????????????$str.=$filenametemp."|";
????????????????????????????????????????????????
????????????????????????????????????????}其他{
????????????????????????????????????????????????父級::errorMoveUpload();
????????????????????????????????????????}
????????????????????????????????????????
????????????????????????????????}
????????????????????????????????
????????????????????????}
????????????????????????$這個->上傳文件名=substr($str,0,strlen($str)-1);????????
????????????????????????父級::確定已移動();
????????????????}
????????}
????????
????????公共函數(shù)getUploadFileName()
????????{
????????????????返回$這個->上傳文件名;
????????}
????????
????????公共函數(shù)setUploadPath($path)
????????{
????????????????$這個->上傳路徑=$path;
????????}
????????
????????
????????私有函數(shù)getRandomN($n)
????????{
????????????????if?($n?1?||?$n>10)??返回?"";
????????
????????????????$ary_num=?數(shù)組(0,1,2,3,4,5 ,6,7,8,9 );
????????????????$return?="";
????????????????對于 ($i=0;$i $n;$i )
????????????????{
????????????????????????$randn?=?蘭特(0,9 -$i);
????????????????????????$return?.=?$ary_num[$randn];
????????????????????????$ary_num[$randn]?=?$ary_num[9-$i];
????????????????}
????????????????返回$return;
????????}
????????
????????
????????公共函數(shù)__destruct()
????????{
????????????????$這個->上傳文件名=null ;
????????????????$這個->上傳類型=null ;
????????????????$這個->文件=null ;
????????????????$這個->保存路徑=null ;
????????}
????????
}
類錯誤
{
????????public?static?function?errorFileSize()
????????{
????????????????echo?"超出最大上傳限制";
????????}
????????
????????public?static?function?errorExt()
????????{
????????????????echo?"此類文件不允許上傳";
????????}
????????
????????public?static?function?errorUploadPath()
????????{
????????????????echo?"上傳路徑不正確";
????????}
????????
????????public?static?function?errorMoveUpload()
????????{
????????????????echo?"上傳失敗";
????????}
????????
????????public?static?function?okMoved()
????????{
????????????????echo?"上傳成功!";
????????}
????????
????????public?static?function?okArrayMoved()
????????{
????????????????echo?"上傳成功!";
????????}
}
實例應(yīng)用:
?
require_once("include/upload.class.php");
if($_POST["按鈕"])
{
????//print_r($_FILES);
????// 多次上傳
????$上傳?=?新TTRUpload(數(shù)組($_FILES[ “文件1”],$_FILES[“文件2”],$_FILES["文件3"],$_FILES["文件4"]),"任意");
????//單個上傳
????//$upload = new TTRUpload($_FILES["file1"]);
????$上傳->上傳();
????echo $upload->getUploadFileName();
}
?>
html?PUBLIC?“-//W3C//DTD?XHTML?1.0?Transitional//EN”?“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
頭>