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
转载随意,但请附上文章地址:-)