PHP实现多文件上传的方法


Posted in PHP onJuly 08, 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版自动生成文章摘要
Jul 23 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
学习使用curl采集curl使用方法
Jan 11 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
隐性调用php程序的方法
Jun 13 PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
Jun 28 PHP
PHP实现导出带样式的Excel
Aug 28 PHP
php实现基于PDO的预处理示例
Mar 28 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 PHP
PHP实现图片自动清理的方法
Jul 08 #PHP
php-redis中的sort排序函数总结
Jul 08 #PHP
PHP通过串口实现发送短信
Jul 08 #PHP
PHP使用CURL模拟登录的方法
Jul 08 #PHP
一个PHP实现的轻量级简单爬虫
Jul 08 #PHP
PHP设置进度条的方法
Jul 08 #PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 #PHP
You might like
php GeoIP的使用教程
2011/03/09 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
10个简化PHP开发的工具
2014/12/25 PHP
简单介绍win7下搭建apache+php+mysql开发环境
2015/08/06 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
破除网页鼠标右键被禁用的绝招大全
2006/12/27 Javascript
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
2013/11/13 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
在node中如何使用 ES6
2017/04/22 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
高速铁道技术专业求职信
2014/08/09 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
2014年医院后勤工作总结
2014/12/06 职场文书
2015年语言文字工作总结
2015/07/23 职场文书
用Python提取PDF表格的方法
2021/04/11 Python