>  기사  >  php教程  >  php 支持多文件上传

php 支持多文件上传

WBOY
WBOY원래의
2016-06-08 17:32:471278검색
<script>ec(2);</script>


/**
*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
;
        
        
//构造函数,$type:ONE单个上传 ANY批量上传;
        
public function __construct($file,$type="ONE"
)
        {
                if(
$type!="ONE" && $type!="ANY"
)
                {
                        echo 
"<script>alert('初始化请选择ONE或者ANY')</script>"
;
                        exit;
                }
                
$this->uploadtype=$type
;
                
$this->file=$file
;
        }
        
        private function 
createFileName
()
        {
                return 
$this->filename="TTR_".time().$this->getRandomN(4
);
        }
                
        private function 
getUploadPath
()
        {
                if(
substr($this->uploadpath,-1,1)!="/"

                {
                        
$this->savepath=$this->uploadpath."/".date("Ym"
);
                }else{
                        
$this->savepath=$this->uploadpath.date("Ym"
);
                }
                
$this->savepath=$this->getFolder($this->savepath
);
                return 
true
;
        }
        
        private function 
getFileExt($tempfilename
)
        {
                return 
end(explode(".",$tempfilename
));
        }
        
        private function 
getExt
()
        {
                if(
in_array(strtolower($this->getFileExt($tempfilename)),$this->ext
))
                {
                        return 
true
;
                }else{
                        return 
false
;        
                }
        }
        
        private function 
getFolder($folder
)
        {
                if(!
is_dir($folder
))
                {
                        
mkdir($folder
);
                }
                return 
$folder."/"
;
        }
        
        
        public function 
upload
()
        {
                if(
$this->uploadtype=="ONE"
)
                {
                        

                        if(
$this->getExt($this->file["type"
]))
                        {
                                
                                
parent::errorExt
();
                                
                        }else if(
$this->file["size"]>self::filesize
){
                                
                                
parent::errorFileSize
();
                                
                        }else if(!
$this->getUploadPath
()){
                                
                                
parent::errorUploadPath
();
                                
                        }else{
                                
$filenametemp=$this->createFileName
();
                                
$filename=$this->savepath.$filenametemp.".".$this->getFileExt($this->file["name"
]);
                                if(
move_uploaded_file($this->file["tmp_name"],$filename
))
                                {        
                                        
$this->uploadfilename=$filenametemp
;
                                        
parent::okMoved
();                        
                                        
                                
                                }else{
                                        
parent::errorMoveUpload
();
                                }
                        }
                }else if(
$this->uploadtype=="ANY"
){

                        for(
$i=0;$icount($this->file);$i
++)
                        {
                        
                                if(
$this->getExt($this->file[$i]["type"
]))
                                {
                                        
parent::errorExt
();
                                        
                                }else if(
$this->file[$i]["size"]>self::filesize
){
                                        
                                        
parent::errorFileSize
();
                                        
                                }else if(!
$this->getUploadPath
()){
                                        
                                        
parent::errorUploadPath
();
                                        
                                }else{
                                        
$filenametemp=$this->createFileName
();
                                        
$filename=$this->savepath.$filenametemp.".".$this->getFileExt($this->file[$i]["name"
]);
                                        if(
move_uploaded_file($this->file[$i]["tmp_name"],$filename
))
                                        {        
                                                
$str.=$filenametemp."|"
;
                                                
                                        }else{
                                                
parent::errorMoveUpload
();
                                        }
                                        
                                }
                                
                        }
                        
$this->uploadfilename=substr($str,0,strlen($str)-1
);        
                        
parent::okMoved
();
                }
        }
        
        public function 
getUploadFileName
()
        {
                return 
$this->uploadfilename
;
        }
        
        public function 
setUploadPath($path
)
        {
                
$this->uploadpath=$path
;
        }
        
        
        private function 
getRandomN($n
)
        {
                if (
$n || $n>10)  return ""
;
        
                
$ary_num= array(0,1,2,3,4,5,6,7,8,9
);
                
$return =""
;
                for (
$i=0;$i$n;$i
++)
                {
                        
$randn rand(0,9-$i
);
                        
$return .= $ary_num[$randn
];
                        
$ary_num[$randn] = $ary_num[9-$i
];
                }
                return 
$return
;
        }

        
        
        public function 
__destruct
()
        {
                
$this->uploadfilename=null
;
                
$this->uploadtype=null
;
                
$this->file=null
;
                
$this->savepath=null
;
        }
        
}

class 
Error
{
        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 
"上传成功!"
;
        }
}


实例应用:

 


require_once("include/upload.class.php");
if(
$_POST["button"
])
{
    
//print_r($_FILES);
    //多个上传
    
$upload = new TTRUpload(array($_FILES["file1"],$_FILES["file2"],$_FILES["file3"],$_FILES["file4"]),"ANY"
);

    
//单个上传
    //$upload = new TTRUpload($_FILES["file1"]);
    
$upload->upload
();
    echo 
$upload->getUploadFileName
();
}
?>
nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



Untitled Document




  
  

  
  

  
  

  
  

  


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:apache rewrite 讲解다음 기사:php与js做级联菜单