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中使用addslashes函数报错问题的解决方法
Feb 06 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
php实现模拟post请求用法实例
Jul 11 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
php中注册器模式类用法实例分析
Nov 03 PHP
详解HTTP Cookie状态管理机制
Jan 14 PHP
php session 写入数据库
Feb 13 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP云打印类完整示例
Oct 15 PHP
php使用Jpgraph创建3D饼形图效果示例
Feb 15 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
默默简单的写了一个模板引擎
2007/01/02 PHP
PHP通用检测函数集合
2011/02/08 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
关于jQuery中的end()使用方法
2011/07/10 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
jsMind通过鼠标拖拽的方式调整节点位置
2015/04/13 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
javascript基本语法
2016/05/31 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
react 创建单例组件的方法
2018/04/26 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
2018/08/10 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
python实现的文件同步服务器实例
2015/06/02 Python
python的mysqldb安装步骤详解
2017/08/14 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
Steiff台湾官网:德国金耳釦泰迪熊
2019/12/26 全球购物
土木工程师岗位职责
2013/11/24 职场文书
端午节演讲稿
2014/05/23 职场文书
学校社团活动总结
2015/05/07 职场文书
市场营销计划书
2019/04/24 职场文书
七年级作文之雪景
2019/11/18 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
vue中使用mockjs配置和使用方式
2022/04/06 Vue.js