适用于初学者的简易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
用PHP写的MySQL数据库用户认证系统代码
Mar 22 PHP
php下将XML转换为数组
Jan 01 PHP
php中Smarty模板初体验
Aug 08 PHP
php上传文件并存储到mysql数据库的方法
Mar 16 PHP
php简单生成随机数的方法
Jul 30 PHP
实例讲解PHP设计模式编程中的简单工厂模式
Feb 29 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
Sep 26 PHP
PHP中递归的实现实例详解
Nov 14 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
CI框架附属类用法分析
Dec 26 PHP
yii框架结合charjs实现统计30天数据的方法
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
虫族 Zerg 热键控制
2020/03/14 星际争霸
第七节 类的静态成员 [7]
2006/10/09 PHP
php 获取select下拉列表框的值
2010/05/08 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript 数组操作详解
2015/01/29 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
2020/09/04 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
Python编程中类与类的关系详解
2019/08/08 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
python plt可视化——打印特殊符号和制作图例代码
2020/04/17 Python
matplotlib教程——强大的python作图工具库
2020/10/15 Python
小天鹅官方商城:LittleSwan
2017/06/16 全球购物
电影T恤、80年代T恤和80年代服装:TV Store Online
2020/01/05 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
商务英语应届生自我鉴定
2013/12/08 职场文书
酒店总经理欢迎词
2014/01/08 职场文书
搞笑爱情保证书
2014/04/29 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
2015年世界粮食日演讲稿
2015/03/20 职场文书
签约仪式致辞
2015/07/30 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
golang 实现时间戳和时间的转化
2021/05/07 Golang
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android