适用于初学者的简易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 相关文章推荐
mysql中存储过程、函数的一些问题
Feb 14 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
PHP 正则判断中文UTF-8或GBK的思路及具体实现
Nov 26 PHP
php程序总是提示验证码输入有误解决方案
Jan 07 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
PHP时间和日期函数详解
May 08 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
PHP批量获取网页中所有固定种子链接的方法
Nov 18 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
ThinkPHP5.0框架使用build 自动生成模块操作示例
Apr 11 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
PHP如何通过date() 函数格式化显示时间
Nov 13 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
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
Nginx实现反向代理
2017/09/20 Servers
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
如何重写Laravel异常处理类详解
2020/12/20 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
nodejs URL模块操作URL相关方法介绍
2015/03/03 NodeJs
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
Angular学习教程之RouterLink花式跳转
2018/05/03 Javascript
vant(ZanUi)结合async-validator实现表单验证的方法
2018/12/06 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
微信小程序接入腾讯云验证码的方法步骤
2020/01/07 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
python去除文件中空格、Tab及回车的方法
2016/04/12 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
python制作小说爬虫实录
2017/08/14 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
python表格存取的方法
2018/03/07 Python
分分钟入门python语言
2018/03/20 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
使用python list 查找所有匹配元素的位置实例
2019/06/11 Python
python psutil模块使用方法解析
2019/08/01 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
python入门:argparse浅析 nargs='+'作用
2020/07/12 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
介绍下Lucene建立索引的过程
2016/03/02 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
《火烧云》教学反思
2014/04/12 职场文书
民事诉讼代理委托书
2014/10/08 职场文书