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


Posted in PHP onOctober 29, 2015

本文实例讲述了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 相关文章推荐
PHP的FTP学习(一)[转自奥索]
Oct 09 PHP
《PHP边学边教》(04.编写简易的通讯录――视频教程1)
Dec 13 PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
初识php MVC
Sep 10 PHP
php密码生成类实例
Sep 24 PHP
如何使用php实现评委评分器
Jul 31 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
ThinkPHP 3.2.3实现页面静态化功能的方法详解
Aug 03 PHP
PHP token验证生成原理实例分析
Jun 05 PHP
php实现网站文件批量压缩下载功能
Oct 28 #PHP
php简单日历函数
Oct 28 #PHP
php将数组存储为文本文件方法汇总
Oct 28 #PHP
php如何获取文件的扩展名
Oct 28 #PHP
php检查页面是否被百度收录
Oct 28 #PHP
PHP加密解密函数详解
Oct 28 #PHP
php实现阳历阴历互转的方法
Oct 28 #PHP
You might like
php使用parse_url和parse_str解析URL
2015/02/22 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
javascript天然的迭代器
2010/10/29 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
2017/04/11 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
微信小程序实现皮肤功能(夜间模式)
2017/06/18 Javascript
JavaScript正则表达式简单实用实例
2017/06/23 Javascript
vue组件之间数据传递的方法实例分析
2019/02/12 Javascript
一文看懂如何简单实现节流函数和防抖函数
2019/09/05 Javascript
详细分析Node.js 多进程
2020/06/22 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
pandas中Timestamp类用法详解
2017/12/11 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
2018/06/13 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
2020/08/07 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
大学毕业通用个人的求职信
2013/12/08 职场文书
海南地接欢迎词
2014/01/14 职场文书
市场营销专业大学生职业生涯规划文
2014/03/06 职场文书
安全生产管理合理化建议书
2014/03/12 职场文书
中学生励志演讲稿
2014/04/26 职场文书
教师演讲稿大全
2014/05/16 职场文书
股权投资协议书
2016/03/23 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
golang interface判断为空nil的实现代码
2021/04/24 Golang
Python实现单例模式的5种方法
2021/06/15 Python