适用于初学者的简易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 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
在PHP中使用Sockets 从Usenet中获取文件
Jan 10 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
比较详细PHP生成静态页面教程
Jan 10 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
教大家制作简单的php日历
Nov 17 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php使用PDO事务配合表格读取大量数据插入操作实现方法
Feb 16 PHP
浅谈php中变量的数据类型判断函数
Mar 04 PHP
php把字符串指定字符分割成数组的方法
Mar 12 PHP
Ajax请求PHP后台接口返回信息的实例代码
Aug 21 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 session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
Javascript浅谈之引用类型
2013/12/18 Javascript
Ionic实现仿通讯录点击滑动及$ionicscrolldelegate使用分析
2016/01/18 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
Nuxt.js之自动路由原理的实现方法
2018/11/21 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
echarts 使用formatter 修改鼠标悬浮事件信息操作
2020/07/20 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python爬虫文件下载图文教程
2018/12/23 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
有趣的流行文化T恤、马克杯、手机壳和更多:Look Human
2019/01/07 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
将"引用"作为函数参数有哪些特点
2013/04/05 面试题
材料化学应届生求职信
2013/10/09 职场文书
农贸市场管理制度
2014/01/31 职场文书
松材线虫病防治方案
2014/06/15 职场文书
群众路线四风自我剖析材料
2014/10/08 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
优秀团队申报材料
2014/12/26 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
上课迟到检讨书
2015/05/06 职场文书
刑事附带民事代理词
2015/05/25 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python