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转成EXE文件
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
用PHP实现的生成静态HTML速度快类库
Mar 31 PHP
PHP 处理图片的类实现代码
Oct 23 PHP
php中static静态变量的使用方法详解
Jun 04 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
ThinkPHP3.1新特性之查询条件预处理简介
Jun 19 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
php实现过滤UBB代码的类
Mar 12 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 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
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
jquery实现文本框textarea自适应高度
2016/03/09 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
ajax跨域访问遇到的问题及解决方案
2019/05/23 Javascript
Node.js API详解之 string_decoder用法实例分析
2020/04/29 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
python实现SMTP邮件发送功能
2020/06/16 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
python实现名片管理系统
2018/11/29 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
SmartBuyGlasses英国:购买太阳镜和眼镜
2018/01/29 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
计算机专业应届毕业生自荐信
2013/09/26 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
新店开张活动方案
2014/08/24 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
质量负责人岗位职责
2015/02/15 职场文书
2015年社区科普工作总结
2015/05/13 职场文书
Mysql Show Profile
2021/04/05 MySQL
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Python实现科学占卜 让视频自动打码
2022/04/09 Python