适用于初学者的简易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 创建标签云函数代码
May 26 PHP
检查用户名是否已在mysql中存在的php写法
Jan 20 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
php绘图之生成饼状图的方法
Jan 24 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
文件上传之SWFUpload插件(代码)
Jul 30 PHP
thinkPHP3.1验证码的简单实现方法
Apr 22 PHP
CodeIgniter生成静态页的方法
May 17 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
laravel 关联关系遍历数组的例子
Oct 10 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 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.NET的入门教程
2006/10/09 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
Javascript &amp; DHTML 实例编程(教程)基础知识
2007/06/02 Javascript
不懂JavaScript应该怎样学
2008/04/16 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
javascript每日必学之循环
2016/02/19 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
如何学JavaScript?前辈的经验之谈
2016/12/28 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
JS二分查找算法详解
2017/11/01 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
javascript实现蒙版与禁止页面滚动
2020/01/11 Javascript
vue 导航守卫和axios拦截器有哪些区别
2020/12/19 Vue.js
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
医科大学生的自我评价
2013/12/04 职场文书
自考生自我评价分享
2014/01/18 职场文书
开学随笔
2015/08/15 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
python 如何在list中找Topk的数值和索引
2021/05/20 Python