适用于初学者的简易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中的超全局变量
Oct 09 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
php5.5中类级别的常量使用介绍
Oct 02 PHP
php 邮件发送问题解决
Mar 22 PHP
CentOS下PHP安装Oracle扩展
Feb 15 PHP
PHP实现指定字段的多维数组排序函数分享
Mar 09 PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 PHP
PHP实现的简单排列组合算法应用示例
Jun 20 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP var关键字相关原理及使用实例解析
Jul 11 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
codeigniter框架批量插入数据
2014/01/09 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
php-fpm重启导致的程序执行中断问题详解
2019/04/29 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
Bootstrap插件全集
2016/07/18 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
详解小程序如何动态绑定点击的执行方法
2019/11/26 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
matplotlib中legend位置调整解析
2017/12/19 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
纯CSS3实现鼠标悬停提示气泡效果
2014/02/28 HTML / CSS
HTML5 textarea高度自适应的两种方案
2020/04/08 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
Allen Edmonds官方网站:一家美国优质男士鞋类及配饰制造商
2019/03/12 全球购物
教师业务学习制度
2014/01/25 职场文书
校园活动策划方案
2014/06/13 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
教师节慰问信
2015/02/15 职场文书
销售员岗位职责范本
2015/04/11 职场文书
建党伟业的观后感
2015/06/01 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书