PHP上传类upload.php的具体使用方法

开发 后端
PHP上传类upload.php的主要作用就是帮助我们实现文件上传的功能,希望读者朋友在看后能够实践操作一回,加深对这一类的理解。

我们今天为大家带来的是关于PHP上传类upload.php 的具体用法,希望广大读者朋友能够通过本文所介绍的内容得到帮助,增加我们的知识点。

#t#具体代码如下:

  1. <?php 
  2.  
  3. /**  
  4.  * 我的文件上传类  
  5.  *  
  6.  * 未完成的功能:  
  7.  * 1.对目标目录是否存在的判断  
  8.  * 2.如果上传时出现重名,自动重命名  
  9.  *   
  10.  * @author M.Q. <[url]www.mengqi.net[/url]> 
  11.  */  
  12. class upload  
  13. {  
  14.     /**  
  15.      * PHP上传类upload.php上传文件的信息,此值由构造函数取得,如果上传文件失败或出错或未上传,则此值为false  
  16.      *  
  17.      * @var array  
  18.      */  
  19.     private $file = false;   
  20.       
  21.      
  22.     /**  
  23.      * 构造函数:取得上传文件的信息  
  24.      *   
  25.      * 如果在上传文件的工程中发生错误,那么出错的文件不会放在结果中返回,结果中的文件都是可用的  
  26.      *  
  27.      * @param string $tag form表单中<input>标签中name属性的值,例<input name="p" type="file"> 
  28.      *   
  29.      * 例1,上传单个文件:  
  30.      * <input name="upfile" type="file"> 
  31.      *   
  32.      * 例2,上传多个文件:  
  33.      * <input name="upfile[]" type="file"> 
  34.      * <input name="upfile[]" type="file"> 
  35.      *   
  36.      * 结果(保存在$file变量中)如下:  
  37.      *   
  38.      * array(  
  39.      * [0] => array(  
  40.      *      'name'      => 'abc.txt'  
  41.      *      'type'      => 'text/plain’  
  42.      *      'tmp_name'  => '/tmp/phpgxecCb'  
  43.      *      'error'     => 0  
  44.      *      'size'      => 62  
  45.      *      )  
  46.      * [1] => array(  
  47.      *      'name'      => 'abc.txt'  
  48.      *      'type'      => 'text/plain’  
  49.      *      'tmp_name'  => '/tmp/phpgxecCb'  
  50.      *      'error'     => 0  
  51.      *      'size'      => 62  
  52.      *      )  
  53.      * )  
  54.      */  
  55.     public function __construct($tag)  
  56.     {  
  57.         $file = $_FILES[$tag];  
  58.                  
  59.         if (!isset($file) || empty($file))   
  60.         {  
  61.             return; //没有上传文件  
  62.         }  
  63.           
  64.         $num = count($file['name']); //PHP上传类upload.php上传文件的个数  
  65.           
  66.         $data = array(); //用来保存上传文件的信息的数组  
  67.  
  68.         //上传了多个文件  
  69.         if ($num > 1)  
  70.         {  
  71.             for($i = 0; $i < $num; $i++)  
  72.             {  
  73.                 $d = array();  
  74.                 $d['name']       = $file['name'][$i];  
  75.                 $d['type']       = $file['type'][$i];  
  76.                 $d['tmp_name']   = $file['tmp_name'][$i];  
  77.                 $d['error']      = $file['error'][$i];  
  78.                 $d['size']       = $file['size'][$i];  
  79.                   
  80.                 if ($d['error'] == 0)  
  81.                 {  
  82.                     $data[] = $d;  
  83.                 }  
  84.                 else   
  85.                 {  
  86.                     @unlink($d['tmp_name']);  
  87.                 }  
  88.             }  
  89.         }  
  90.         //只上传了一个文件  
  91.         else   
  92.         {  
  93.             $d = array();  
  94.             $d['name']       = $file['name'];  
  95.             $d['type']       = $file['type'];  
  96.             $d['tmp_name']   = $file['tmp_name'];  
  97.             $d['error']      = $file['error'];  
  98.             $d['size']       = $file['size'];  
  99.               
  100.             if ($d['error'] == 0)  
  101.             {  
  102.                 $data[] = $d;  
  103.             }  
  104.             else   
  105.             {  
  106.                 @unlink($d['tmp_name']);  
  107.             }  
  108.         }  
  109.           
  110.         if (empty($data)) return;  
  111.           
  112.         $this -> file = $data; //保存上传文件的信息  
  113.     }  
  114.       
  115.     /**  
  116.      * 将上传的文件从临时文件夹移动到目标路径  
  117.      *  
  118.      * @param array $src 文件信息数组,是$file数组的其中一个元素(仍然是数组)  
  119.      * @param string $destpath 上传的目标路径  
  120.      * @param string $filename 上传后的文件名,如果为空,则使用上传时的文件名  
  121.      * @return bool  
  122.      */  
  123.     public function save($src, $destpath, $filename = null)  
  124.     {  
  125.         $srcTName = $src['tmp_name']; //原始上传文件的临时文件名  
  126.         $srcFName = $src['name'];     //原始文件名  
  127.           
  128.         //如果$filename参数为空,则使用上传时的文件名  
  129.         if (empty($filename))  
  130.         {  
  131.             $filename = $srcFName;  
  132.         }  
  133.           
  134.         //$dest是文件最终要复制到的路径和文件名  
  135.         if (empty($destpath))  
  136.         {  
  137.             $dest = $filename;  
  138.         }  
  139.         else   
  140.         {  
  141.             //修正路径中的斜杠,将末尾的\修改为/,如果末尾不是\也不是/,则给末尾添加一个/  
  142.             $pathend = $destpath[strlen($destpath) - 1]; //上传的目标路径的***一个字符  
  143.             if ($pathend == '\\')  
  144.             {  
  145.                 $dest = substr_replace($destpath, '/', strlen($destpath)-1).$filename;  
  146.             }  
  147.             else if ($pathend != '/')  
  148.             {  
  149.                 $dest = $destpath.'/'.$filename;  
  150.             }  
  151.             else   
  152.             {  
  153.                 $dest = $destpath.$filename;  
  154.             }  
  155.         }  
  156.             
  157.         //上传文件成功  
  158.         if (@move_uploaded_file($srcTName, $dest))  
  159.         {  
  160.               
  161.             return true;   
  162.         }  
  163.         else   
  164.         {  
  165.             return false;  
  166.         }  
  167.     }  
  168.       
  169.     /**  
  170.      * 取得上传文件的信息  
  171.      *  
  172.      * @return array  
  173.      */  
  174.     public function getFileInfo()  
  175.     {  
  176.         return $this->file;  
  177.     }  
  178. }  
  179.  
  180.  
  181. $a = new upload('upfile');  
  182.  
  183. $fileinfo = $a -> getFileInfo();  
  184. if ($fileinfo == false)  
  185. {  
  186.     echo '没有上传文件!';  
  187.     exit;  
  188. }  
  189.  
  190. for($i = 0; $i < count($fileinfo); $i++)  
  191. {  
  192.     echo '正在上传 '.$fileinfo[$i]['name'].' ';  
  193.     if ($a -> save($fileinfo[$i], 'upload')) echo '完毕';  
  194.     else echo '失败';  
  195.     echo '<br>';  
  196. }  
  197. ?> 

以上代码就是关于PHP上传类upload.php的具体使用方法。

责任编辑:曹凯 来源: CSDN
相关推荐

2009-12-02 18:51:12

PHP分页类

2009-12-07 16:52:59

PHP函数getima

2009-12-01 17:00:49

PHP变量

2009-11-25 10:02:27

PHP会话Sessio

2009-11-26 19:05:04

PHP函数explod

2009-11-26 15:23:24

PHP函数ereg()

2009-11-24 19:25:32

PHP关联数组

2009-12-01 18:02:41

PHP表单数组

2009-12-02 14:50:25

PHP接口类inter

2009-12-01 19:02:20

PHP取整函数

2009-11-16 13:57:21

PHP上传文件

2009-11-24 15:01:59

PHP通用文件上传类

2009-11-30 18:08:30

PHP制作动态计数器

2009-12-02 16:04:44

PHP fsockop

2009-11-24 16:18:14

PHP5析构函数

2009-11-30 15:00:19

PHP加密解密函数au

2011-07-12 17:11:13

PHPSHELL

2011-06-16 11:01:56

PHP继承

2009-11-30 17:43:54

PHP split()

2009-11-17 17:38:37

PHP Session
点赞
收藏

51CTO技术栈公众号