适用于初学者的简易PHP文件上传类

5年以前  |  阅读数:853 次  |  编程语言:PHP 

本文实例讲述了PHP多文件上传类,分享给大家供大家参考。具体如下:


    <?php
    class Test_Upload{

      protected $_uploaded = array();
      protected $_destination;  
      protected $_max = 1024000;
      protected $_messages = array();
      protected $_permited = array(
                    'image/gif',
                    'image/jpeg',
                    'image/pjpeg',
                    'image/png'  
      );
      protected $_renamed = false;

      /**
       * 
       * @param mix $path
       * 
       */
      public function __construct($path){

        if (!is_dir($path) || !is_writable($path)){
          throw new Exception("文件名不可写,或者不是目录!");
        }
        $this->_destination = $path;
        $this->_uploaded = $_FILES;
      }
      /**
       * 移动文件
       * 
       */
      public function move(){

        $filed = current($this->_uploaded); 

        $isOk = $this->checkError($filed['name'], $filed['error']);
        //debug ok
        if ($isOk){
          $sizeOk = $this->checkSize($filed['name'], $filed['size']);
          $typeOk = $this->checkType($filed['name'], $filed['type']);
          if ($sizeOk && $typeOk){

            $success = move_uploaded_file($filed['tmp_name'], $this->_destination.$filed['name']);

            if ($success){
              $this->_messages[] = $filed['name']."文件上传成功";
            }else {
              $this->_messages[] = $filed['name']."文件上传失败";
            }
          }

        }
      }
      /**
       * 查询messages数组内容 
       *
       */
      public function getMessages(){
        return $this->_messages;
      }

      /**
       * 检测上传的文件大小
       * @param mix $string
       * @param int $size
       */
      public function checkSize($filename, $size){

        if ($size == 0){
          return false;
        }else if ($size > $this->_max){
          $this->_messages[] = "文件超出上传限制大小".$this->getMaxsize();
          return false;
        }else { 
          return true;
        }
      }

      /**
       * 检测上传文件的类型
       * @param mix $filename
       * @param mix $type
       */
      protected function checkType($filename, $type){
        if (!in_array($type, $this->_permited)){
          $this->_messages[] = "该文件类型是不被允许的上传类型";
          return false;
        }else {
          return true;
        }
      }

      /**
       * 获取文件大小
       * 
       */
      public function getMaxsize(){
        return number_format($this->_max / 1024, 1).'KB';
      }

      /**
       * 检测上传错误
       * @param mix $filename
       * @param int $error
       * 
       */
      public function checkError($filename, $error){
        switch ($error){
          case 0 : return true;
          case 1 :
          case 2 : $this->_messages[] = "文件过大!"; return true;
          case 3 : $this->_messages[] = "错误上传文件!";return false;
          case 4 : $this->_messages[] = "没有选择文件!"; return false;
          default : $this->_messages[] = "系统错误!"; return false;
        }
      }
    }
    ?>

希望本文所述对大家的php程序设计有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例