写了个简单的文件上传类,能同时上传多个文件。
下面是类
- <?php
- /*
- * 文件上传
- * site:http://wangtao.name
- */
- class uploadFile
- {
- private $files = array();
- private $uplodName = '';
- private $folder = '';
- function __construct($files,$uplodName='',$folder = '')
- {
- $j = 0;
- foreach($files['name'] as $value)
- {
- $newFiles[$value] = array(
- "name" => $files['name'][$j],
- "type" => $files['name'][$j],
- "tmp_name" => $files['tmp_name'][$j],
- "error" => $files['error'][$j],
- "size" => $files['size'][$j]
- );
- $j ++;
- }
- $this-> files = $newFiles;
- $this-> uplodName = $uplodName;
- $this-> folder = $folder;
- }
- /*
- * 保存文件
- */
- function saveFiles()
- {
- if (empty($this -> files))
- {
- return array();
- }
- else
- {
- $fileInfo = array();
- foreach ($this -> files as $file)
- {
- $fileInfo[] = self::file($file,$this -> uplodName ,$this -> folder);
- }
- return $fileInfo;
- }
- }
- /*
- * 传入一个文件数组;
- * 上传文件成功后返回数组;
- * $file: 从浏览器中获得的文件数组
- * $uplodName:为保存到文件名,默认为空
- * $folder: 上传后保存的目录,默认为空
- */
- static function file($file, $uplodName = '', $folder = '')
- {
- #判断文件数组是否正确
- if($file['error'] > 0)
- {
- echo 'Error: ' . $file['error'];
- }
- #生成上传后的文件路径
- if(empty($uplodName))
- {
- $fileName = self::createFolder(date('Y-m')) . self::getFilename() . '.' . self::getFileSuffixName($file['name']);
- }
- else
- {
- $fileName = self::createFolder($folder) . $uplodName . '.' . self::fileAdorn($file['name']);
- if(file_exists($fileName))
- {
- echo '相同的文件名存在';
- return false;
- }
- }
- #上传成功返回数组
- if(move_uploaded_file($file['tmp_name'],$fileName))
- {
- return $fileName;
- }
- else
- {
- return false;
- }
- }
- #创建目录
- static private function createFolder($folder = '')
- {
- if(empty($folder))
- {
- #默认路径
- $path = date('Y-m');
- }
- else
- {
- $path = $folder;
- }
- if(file_exists($path))
- {}
- else
- {
- mkdir($path, '0777');
- }
- return $path . '/';
- }
- /**
- * 获取一个的文件名
- * @param $prefix 文件名的前缀
- */
- static function getFilename($prefix = '')
- {
- $s = explode(" ",microtime());
- $s = $s[1].substr($s[0],2,-1);
- $s .= mt_rand();
- return $prefix?$prefix.$s:$s;
- }
- /*
- * 获得文件后缀
- * $fileName:文件名
- */
- static function getFileSuffixName($fileName)
- {
- $arr = explode('.',$fileName);
- $adorn = array_pop($arr);
- return $adorn;
- }
- }
简单的演示
index.html
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>文件上传</title>
- </head>
- <body>
- <form action="upload.php" method="post" enctype="multipart/form-data" id="form1">
- <p><input type="file" name="file[]" /></p>
- <p><input type="file" name="file[]" /></p>
- <p><input type="file" name="file[]" /></p>
- <p><input type="submit" name="button" id="button" value="Submit" /></p>
- </form>
- </body>
- </html>
upload.php
- <?php
- $files = $_FILES['file'];
- $file = new uploadFile($files);
- $arr = $file -> saveFiles();
- print_r($arr);