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