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 09 PHP
《PHP边学边教》(01.开篇――准备工作)
Dec 13 PHP
从康盛产品(discuz)提取出来的模板类
Jun 28 PHP
php include和require的区别深入解析
Jun 17 PHP
php删除字符串末尾子字符,删除开始字符,删除两端字符(实现代码)
Jun 27 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
Nov 27 PHP
iOS+PHP注册登录系统 PHP部分(上)
Dec 26 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
php命名空间设计思想、用法与缺点分析
Jul 17 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 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
用php+mysql一个名片库程序
2006/10/09 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
开启PHP的伪静态模式
2015/12/31 PHP
jQuery之网页换肤实现代码
2011/04/30 Javascript
js Array操作的最简短最容易理解方法
2013/12/09 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
javascript闭包入门示例
2014/04/30 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
深入理解JavaScript中的箭头函数
2015/07/28 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
React中jquery引用的实现方法
2017/09/12 jQuery
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
Vue动态加载异步组件的方法
2018/11/21 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
django query模块
2019/04/20 Python
python解析xml简单示例
2019/06/21 Python
Python facenet进行人脸识别测试过程解析
2019/08/16 Python
python实现门限回归方式
2020/02/29 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
绩效专员岗位职责
2013/12/02 职场文书
初中政治教学反思
2014/01/17 职场文书
酒店员工职业生涯规划
2014/02/25 职场文书
高一军训的心得体会
2014/09/01 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
家庭贫困证明
2014/09/23 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python