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与XML的PDF文档生成技术
Oct 09 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
Apr 28 PHP
php中判断数组相等的方法以及数组运算符介绍
Mar 30 PHP
PHP生成唯一订单号的方法汇总
Apr 16 PHP
简单介绍win7下搭建apache+php+mysql开发环境
Aug 06 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
Jul 20 PHP
php PDO属性设置与操作方法分析
Dec 27 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的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
分享php邮件管理器源码
2016/01/06 PHP
php实现网页端验证码功能
2017/07/11 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
详解php反序列化
2020/06/10 PHP
PHP7 list() 函数修改
2021/03/09 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
JS修改iframe页面背景颜色的方法
2015/04/01 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python实现读取文件最后n行的方法
2017/02/23 Python
python如何定义带参数的装饰器
2018/03/20 Python
python将回车作为输入内容的实例
2018/06/23 Python
python 通过 socket 发送文件的实例代码
2018/08/14 Python
python导入模块交叉引用的方法
2019/01/19 Python
简单了解django缓存方式及配置
2019/07/19 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python怎么自定义捕获错误
2020/06/29 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
美国婚戒购物网站:Anjays Designs
2017/06/28 全球购物
耐克中国官方商城:Nike中国
2018/10/18 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
美国滑板店:Tactics
2020/11/08 全球购物
2014年两会学习心得体会
2014/03/17 职场文书
工程负责人任命书
2014/06/06 职场文书
护士先进个人总结
2015/02/13 职场文书
民事起诉状范文
2015/05/19 职场文书
陪护人员误工证明
2015/06/24 职场文书
小学语文教师研修日志
2015/11/13 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript
python3.9之你应该知道的新特性详解
2021/04/29 Python