适用于初学者的简易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 相关文章推荐
input file获得文件根目录简单实现
Apr 26 PHP
PHP对接微信公众平台消息接口开发流程教程
Mar 25 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
PHP转换文本框内容为HTML格式的方法
Jul 20 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
PHP和MYSQL实现分页导航思路详解
Apr 11 PHP
PHP使用PDO调用mssql存储过程的方法示例
Oct 07 PHP
php上传后台无法收到数据解决方法
Oct 28 PHP
php的无刷新操作实现方法分析
Feb 28 PHP
PHP 数组操作详解【遍历、指针、函数等】
May 13 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 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写的serv-u的web申请账号的程序
2006/10/09 PHP
PHP 基本语法格式
2009/12/15 PHP
php强制下载类型的实现代码
2011/04/21 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
用nodejs访问ActiveX对象,以操作Access数据库为例。
2011/12/15 NodeJs
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
深入理解JavaScript系列(45):代码复用模式(避免篇)详解
2015/03/04 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
python 实现目录复制的三种小结
2019/12/04 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
全球性的在线购物网站:Zapals
2017/03/22 全球购物
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
医学生自我评价
2014/01/27 职场文书
远程网络教育毕业生自我鉴定
2014/04/14 职场文书
单位绩效考核方案
2014/05/11 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2015年组织部工作总结
2015/04/03 职场文书
2019年中,最受大众欢迎的6本新书
2019/08/07 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript