• 技术文章 >后端开发 >php教程

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

    2016-05-16 20:05:37原创620
    本文实例讲述了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程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:php验证邮箱和ip地址最简单方法汇总_php技巧 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • PHP编译器BPC6.0已发布,聊聊有哪些新功能吧!• 汇总有关PHP多进程开发面试常见问题(附答案)• php对称加解密的5个问答小结• php删除数组的最后一个元素和第一个元素_PHP教程• 经验总结:示例PHP上传文件代码_PHP教程
    1/1

    PHP中文网