写了个简单的文件上传类,能同时上传多个文件。

下面是类

  1. <?php
  2. /*
  3. * 文件上传
  4. * site:http://wangtao.name
  5. */
  6. class uploadFile
  7. {
  8.     private $files = array();
  9.     private $uplodName = '';
  10.     private $folder = '';
  11.     function __construct($files,$uplodName='',$folder = '')
  12.     {
  13.         $j = 0;
  14.         foreach($files['name'] as $value)
  15.         {
  16.             $newFiles[$value] = array(
  17.             "name" => $files['name'][$j],
  18.             "type" => $files['name'][$j],
  19.             "tmp_name" => $files['tmp_name'][$j],
  20.             "error" => $files['error'][$j],
  21.             "size" => $files['size'][$j]
  22.             );
  23.             $j ++;
  24.         }
  25.        
  26.        
  27.         $this-> files = $newFiles;
  28.         $this-> uplodName = $uplodName;
  29.         $this-> folder = $folder;
  30.     }
  31.    
  32.     /*
  33.      * 保存文件
  34.      */
  35.     function saveFiles()
  36.     {
  37.         if (empty($this -> files))
  38.         {
  39.             return array();
  40.         }
  41.         else
  42.         {
  43.             $fileInfo = array();
  44.             foreach ($this -> files as $file)
  45.             {
  46.                 $fileInfo[] = self::file($file,$this -> uplodName ,$this -> folder);
  47.             }
  48.             return $fileInfo;
  49.         }
  50.     }
  51.    
  52.     /*
  53.      * 传入一个文件数组;
  54.      * 上传文件成功后返回数组;
  55.      * $file: 从浏览器中获得的文件数组
  56.      * $uplodName:为保存到文件名,默认为空
  57.      * $folder: 上传后保存的目录,默认为空
  58.      */
  59.     static function file($file, $uplodName = '', $folder = '')
  60.     {
  61.         #判断文件数组是否正确
  62.         if($file['error'] > 0)
  63.         {
  64.             echo 'Error: ' . $file['error'];           
  65.         }
  66.         #生成上传后的文件路径
  67.         if(empty($uplodName))
  68.         {
  69.             $fileName = self::createFolder(date('Y-m')) . self::getFilename() . '.' . self::getFileSuffixName($file['name']);
  70.         }
  71.         else
  72.         {
  73.             $fileName = self::createFolder($folder) . $uplodName . '.' . self::fileAdorn($file['name']);
  74.             if(file_exists($fileName))
  75.             {
  76.                 echo  '相同的文件名存在';
  77.                 return false;
  78.             }
  79.         }
  80.        
  81.         #上传成功返回数组
  82.         if(move_uploaded_file($file['tmp_name'],$fileName))
  83.         {
  84.             return $fileName;
  85.         }
  86.         else
  87.         {
  88.             return false;
  89.         }
  90.     }
  91.    
  92.     #创建目录
  93.     static private function createFolder($folder = '')
  94.     {
  95.        
  96.         if(empty($folder))
  97.         {
  98.             #默认路径
  99.             $path = date('Y-m');
  100.         }
  101.         else
  102.         {
  103.             $path = $folder;
  104.         }
  105.         if(file_exists($path))
  106.         {}
  107.         else
  108.         {
  109.             mkdir($path, '0777');
  110.         }
  111.        
  112.         return $path . '/';
  113.     }
  114.    
  115.     /**
  116.      * 获取一个的文件名
  117.      * @param $prefix 文件名的前缀
  118.      */
  119.     static function getFilename($prefix = '')
  120.     {
  121.         $s = explode(" ",microtime());
  122.         $s = $s[1].substr($s[0],2,-1);
  123.         $s .= mt_rand();
  124.         return $prefix?$prefix.$s:$s;
  125.     }
  126.    
  127.     /*
  128.      * 获得文件后缀
  129.      * $fileName:文件名
  130.      */
  131.     static function getFileSuffixName($fileName)
  132.     {
  133.         $arr = explode('.',$fileName);
  134.         $adorn = array_pop($arr);
  135.         return $adorn;
  136.     }
  137. }

简单的演示

index.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>文件上传</title>
  6. </head>
  7.  
  8. <body>
  9. <form action="upload.php" method="post" enctype="multipart/form-data" id="form1">
  10.   <p><input type="file" name="file[]" /></p>
  11.   <p><input type="file" name="file[]" /></p>
  12.   <p><input type="file" name="file[]" /></p>
  13.   <p><input type="submit" name="button" id="button" value="Submit" /></p>
  14. </form>
  15. </body>
  16. </html>

upload.php

  1. <?php
  2. $files = $_FILES['file'];
  3. $file = new uploadFile($files);
  4. $arr = $file -> saveFiles();
  5. print_r($arr);