首页 > php开发 > php 多文件上传经典代码

php 多文件上传经典代码

<?php
require_once ("include/upload.class.php");
if ($_POST["button"]) {
    //print_r($_FILES);
    //多个上传
    //$upload = new TTRUpload($_FILES,"ANY");//同下
    $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>
<html>
<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>
<?php
class TTRUpload extends Error {
    const filesize = 81200000;
    private $uploadpath = "uploadfile/";
    private $savepath = null;
    //单个文件为文件名,批量文件为xxxx|xxxx格式,请注意
    private $uploadfilename = null;
    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 "上传成功!";
    }
}


本文地址:http://www.phprm.com/develop/194098618235d286d285ec683bebed38.html

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

标签:none

发表留言