适用于初学者的简易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中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
PHP中计算字符串相似度的函数代码
Dec 29 PHP
PHPer 需要了解的 5 个 Composer 小技巧
Aug 18 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
WordPress自定义时间显示格式
Mar 27 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
PHP lcfirst()函数定义与用法
Mar 08 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
PHP中的异常处理机制深入讲解
Nov 10 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学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
php中的比较运算符详解
2013/10/28 PHP
php使用CURL伪造IP和来源实例详解
2015/01/15 PHP
Js 随机数产生6位数字
2010/05/13 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
Python使用gRPC传输协议教程
2018/10/16 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
python实现跨excel sheet复制代码实例
2020/03/03 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
python上selenium的弹框操作实现
2020/07/13 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
企业车辆管理制度
2014/01/24 职场文书
自我鉴定标准格式
2014/03/19 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
法定授权委托证明书
2014/09/27 职场文书
2015年教师节广播稿
2015/08/19 职场文书
使用pandas模块实现数据的标准化操作
2021/05/14 Python
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL