PHP多文件上传实例


Posted in PHP onJuly 09, 2015

本文实例讲述了PHP多文件上传的方法。分享给大家供大家参考。具体如下:

<?php
define('ROOT','D:/Program Files/www/test/');
class Files_Tool{
 protected static $allowExt=array('.jpg','.jpeg','.png','.gif','.bmp','.svg','.chm','.pdf','.zip','.rar','.tar','.gz','.bzip2','.ppt','.doc');
 public  static $wrong=array();
 public  static $path=array();
 protected static $error=array(
   0=>'文件上传失败,没有错误发生,文件上传成功',
   1=>'文件上传失败,上传的文件超过了 php.ini中upload_max_filesize 选项限制的值',
   2=>'文件上传失败,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值',
   3=>'文件上传失败,文件只有部分被上传',
   4=>'文件上传失败,没有文件被上传',
   5=>'文件上传失败,未允许的后缀',
   6=>'文件上传失败,找不到临时文件夹.PHP 4.3.10 和 PHP 5.0.3 引进',
   7=>'文件上传失败,文件写入失败.PHP 5.1.0 引进',
   8=>'文件上传失败,未接收到表单域的NAME',
   9=>'文件上传失败,,错误未知'
   );
  public static function upload($name){
   //检测是否接收到表单域的NAME
   if(!isset($_FILES[$name])){
    self::$wrong[]=8;
    return false;
   }
   //3维数组简化成2维数组
   $files=array_shift($_FILES);
   //获取后缀
   $files=self::get_Ext($files);
   //处理文件次数
   $n=count($files['name']);
   for($i=0;$i<$n;$i++){
    //查看当前文件是否有错误信息,有则跳过当前文件,处理下个文件
    if($files['error'][$i]!=0){        
    self::$wrong[$i+1]=$files['error'][$i];
    continue;
    }
    //查看当前文件的后缀,是否允许,如果不允许,跳过当前文件
    if(!in_array($files['name'][$i],self::$allowExt)){
     self::$wrong[$i+1]=5;
     continue;
    }
    //路径
    $dir=self::time_Dir();
    //文件名
    $name=self::rand_Name();
    //后缀
    $ext=$files['name'][$i];
    //文件位置
    $path=$dir.$name.$ext;
    //移动临时文件,如果失败,跳过当前文件
    if(!move_uploaded_file($files['tmp_name'][$i],$path)){
    self::$wrong[$i]=9;
    continue;
    }
    //存入路径
    self::$path[$i+1]=strtr($path,array(ROOT=>''));
   }
   return self::$path;
  }
  //获取后缀的方法
  protected static function get_Ext($arr){
    if(!is_array($arr) || !isset($arr['name'])){return false;}
    foreach($arr['name'] as $k=>$v){
    $arr['name'][$k]=strtolower(strrchr($v,'.'));
    }
    return $arr;
  }
  //以日期生成路径
  protected static function time_Dir(){
   $dir=ROOT.'Data/images/'.date('Y/m/d/',time());
   if(!is_dir($dir)){
    mkdir($dir,0777,true);
   }
   return $dir;
  }
  //生成随机文件名
  protected static function rand_Name(){
   $str=str_shuffle('1234567890qwertyuiopasdfghjklzxcvbnm');
   $str=substr($str,0,6);
   return $str;
  }
  //错误接口
  public static function errors(){
   foreach(self::$wrong as $k=>$v){
    self::$wrong[$k]='第'.$k.'个'.self::$error[$k];
  }
  return self::$wrong;
  }
}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
PHP中通过加号合并数组的一个简单方法分享
Jan 27 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
php正则表达式学习笔记
Nov 13 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
Jan 11 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
Symfony2学习笔记之模板用法详解
Mar 17 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
php实现生成code128条形码的方法详解
Jul 19 PHP
PHP迭代器接口Iterator用法分析
Dec 28 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
Jul 18 PHP
php异常处理捕获错误整理
Sep 23 PHP
php判断linux下程序问题实例
Jul 09 #PHP
php实现html标签闭合检测与修复方法
Jul 09 #PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
Jul 09 #PHP
php类常量用法实例分析
Jul 09 #PHP
php求一个网段开始与结束IP地址的方法
Jul 09 #PHP
PHP实现全角字符转为半角方法汇总
Jul 09 #PHP
php将金额数字转化为中文大写
Jul 09 #PHP
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
javascript hasFocus使用实例
2010/06/29 Javascript
加载jQuery后$冲突的解决办法
2010/07/09 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
全面了解js中的script标签
2016/07/04 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
canvas时钟效果
2017/02/16 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
vue过滤器实现日期格式化的案例分析
2020/07/02 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
使用python实现拉钩网上的FizzBuzzWhizz问题示例
2014/05/05 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python-opencv颜色提取分割方法
2018/12/08 Python
如何在Django配置文件里配置session链接
2019/08/06 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
2021/02/22 Python
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
简历的自荐信
2013/12/19 职场文书
护理专科毕业生自荐书范文
2014/02/19 职场文书
销售团队激励口号
2014/06/06 职场文书
初中体育课教学反思
2016/02/16 职场文书
python基础之函数的定义和调用
2021/10/24 Python
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers