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 相关文章推荐
MYSQL 小技巧 -- LAST_INSERT_ID
Nov 24 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
php生成xml时添加CDATA标签的方法
Oct 17 PHP
php jsonp单引号转义
Nov 23 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
PHP数组函数知识汇总
May 12 PHP
php注册和登录界面的实现案例(推荐)
Oct 24 PHP
PHP编程获取图片的主色调的方法【基于Imagick扩展】
Aug 02 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
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
长波有什么东西
2021/03/01 无线电
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
Zend Studio 实用快捷键一览表(精心整理)
2013/08/10 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
JS 判断代码全收集
2009/04/28 Javascript
jQuery-onload让第一次页面加载时图片是淡入方式显示
2012/05/23 Javascript
基于jQuery的简单九宫格实现代码
2012/08/09 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
微信小程序实现底部导航
2018/11/05 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
如何写一封打动人心的求职信
2014/02/17 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
农业开发项目建议书
2014/05/16 职场文书
中标通知书格式
2015/04/17 职场文书
2015年小学数学教师个人工作总结
2015/05/25 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
大学班长竞选稿
2015/11/20 职场文书
nginx 防盗链防爬虫配置详解
2021/03/31 Servers
Vue实现下拉加载更多
2021/05/09 Vue.js
Python基础之变量的相关知识总结
2021/06/23 Python
JS精髓原型链继承及构造函数继承问题纠正
2022/06/16 Javascript