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


  本文标签:PHP上传类upload.php

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

  

  • PHP批量上传图片的具体实现方式
  • PHP动态多文件上传的具体代码分享
  • PHP通用文件上传类的具体解析
  • PHP文件上传进度条的具体实现方式
  • 为你讲解PHP给图片加水印的具体方法
具体代码如下:

  

  

  

  

  

  

  

  

  

  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的具体使用方法  。