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 Imagick获取图片RGB颜色值
Jul 28 PHP
PHP中上传多个文件的表单设计例子
Nov 19 PHP
php实现源代码加密的方法
Jul 11 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
Dec 07 PHP
php自定义分页类完整实例
Dec 25 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
Jun 04 PHP
php实现数组重复数字统计实例
Sep 30 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
PHP 文件上传全攻略
2010/04/28 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
PHP实现转盘抽奖算法分享
2020/04/15 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
PHP实现简易用户登录系统
2020/07/10 PHP
javascript AutoScroller 函数类
2009/05/29 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
js模仿hover的具体实现代码
2013/12/30 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
javascript使用Promise对象实现异步编程
2016/03/01 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
Angular X中使用ngrx的方法详解(附源码)
2017/07/10 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Vue 通过公共字段,拼接两个对象数组的实例
2019/11/07 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
PyTorch快速搭建神经网络及其保存提取方法详解
2018/04/28 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
python设置环境变量的作用和实例
2019/07/09 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
pytorch 常用线性函数详解
2020/01/15 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
消防先进事迹材料
2014/02/10 职场文书
学校欢迎标语
2014/06/18 职场文书
我的中国梦演讲稿300字
2014/08/19 职场文书
新员工入职欢迎词
2015/01/23 职场文书
Spring中的@Transactional的工作原理
2022/06/05 Java/Android