Home  >  Article  >  php教程  >  php 支持多文件上传

php 支持多文件上传

WBOY
WBOYOriginal
2016-06-08 17:32:471278browse
<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




  
  

  
  

  
  

  
  

  


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:apache rewrite 讲解Next article:php与js做级联菜单