适用于初学者的简易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函数(ignore_user_abort)
Aug 01 PHP
Fine Uploader文件上传组件应用介绍
Jan 06 PHP
解析PHP工厂模式的好处
Jun 18 PHP
在PHP中使用redis
Nov 04 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
Jan 14 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 PHP
ThinkPHP使用心得分享-上传类UploadFile的使用
May 15 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
PHP环境中Memcache的安装和使用
Nov 05 PHP
Yii中表单用法实例详解
Jan 05 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
PHP与Web页面的交互示例详解二
Aug 04 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的栏目导航程序
2006/10/09 PHP
浅析PHP水印技术
2007/02/14 PHP
ThinkPHP应用模式扩展详解
2014/07/16 PHP
JavaScript库 开发规则
2009/01/31 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
javascript 进阶篇3 Ajax 、JSON、 Prototype介绍
2012/03/14 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
js如何实现淡入淡出效果
2020/11/18 Javascript
从零学习node.js之文件操作(三)
2017/02/21 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
详解Vue中组件的缓存
2019/04/20 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
js操作两个json数组合并、去重,以及删除某一项元素
2020/09/22 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python检测网站链接是否已存在
2016/04/07 Python
Python中字符串的处理技巧分享
2016/09/17 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
pytorch查看torch.Tensor和model是否在CUDA上的实例
2020/01/03 Python
Python换行与不换行的输出实例
2020/02/19 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
python自动化发送邮件实例讲解
2021/01/04 Python
美国领先的汽车轮胎和轮毂供应商:TireBuyer
2016/07/21 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
制冷与电控专业应届生求职信
2013/11/11 职场文书
在校实习生求职信
2014/06/18 职场文书
2014年防汛工作总结
2014/12/08 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
python 进阶学习之python装饰器小结
2021/09/04 Python