• 技术文章 >php教程 >PHP源码

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

    PHP中文网PHP中文网2016-05-25 17:04:22原创361
    这篇文章主要为大家分享了一个适用于初学者的简易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;
        }
      }
    }
    ?>
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:MySQL数据库(表)的导入导出(备份和还原) 下一篇:把IP转化成整数

    相关文章推荐

    • php经典分页函数_适合初学才• 做项目过程中学到的PHP知识收集• 为什么FleaPHP使用Table Data Gateway代替Active Record提供数据库• PHP禁止图片文件的被盗链函数• PHP的其他功能

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网