首页 > php代码 > php 支持多文件上传

php 支持多文件上传

<?php
/**
*TTR上传类
*2007-09-22
*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 language='javascript'>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;$i<count($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 < 1 || $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 "上传成功!";
        }
}

实例应用:

 


<?php
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();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <input type="file" name="file1" id="file1" />
  <br />
  <input type="file" name="file2" id="file2" />
  <br />
  <input type="file" name="file3" id="file3" />
  <br />
  <input type="file" name="file4" id="file4" />
  <br />
  <input type="submit" name="button" id="button" value="Submit" />
</form>
</body>
</html>


本文地址:http://www.phprm.com/code/b22b8ad9fe50194dd88a237b957a44ff.html

转载随意,但请附上文章地址:-)

标签:none

发表留言