PHP实现上传多文件示例代码


Posted in PHP onFebruary 20, 2017

上传多文件

1.在对多文件信息进行操作前,需要构建文件信息,通过buildInfo函数将三维数组转换成便于文件操作的二维数组。

function buildInfo(){
  $i = 0;
  foreach ($_FILES as $v){
    //判断是否是单文件
    if(is_string($v['name'])){
      $files[$i] = $v;
      $i++;
    }else{
      //多文件
      foreach ($v['name'] as $key => $value){
        $files[$i]['name'] = $value;
        $files[$i]['size'] = $v['size'][$key];
        $files[$i]['tmp_name'] = $v['tmp_name'][$key];
        $files[$i]['type'] = $v['type'][$key];
        $files[$i]['error'] = $v['error'][$key];
        $i++;
      }
    }
  }
  return $files;
}

单文件和多文件的判断在于文件数组的类型,单文件(二维数组)、多文件(三维数组)。

2.文件上传函数及参数

function uploadFiles($path = "uploads",  $allowExt = array("jpg", "gif", "png", "wbmp"), $maxSize = 1048576, $imgFlag = true)

path,保存目录。allowExt,允许扩展名数组。maxSize最大上传文件大小。imgFlag,图片文件标识符。

3.判断保存文件的目录是否存在

if(!file_exists($path)){
    mkdir($path, 0777, true);
  }

4.传入构建好的文件信息,保存到files

$i = 0;
$files = buildInfo();

5.判断文件的error类型

foreach ($files as $file){
    if($file['error'] == UPLOAD_ERR_OK){
}else{
    switch ($file['error']){
      case 1:
        $mes = "超过配置文件上传文件大小";
        break;
      case 2:
        $mes = "超过了表单设置";
        break;
      case 3:
        $mes = "文件部分被上传";
        break;
      case 4:
        $mes = "没有文件上传";
        break;
      case 6:
        $mes = "没找到临时目录";
        break;
      case 7:
        $mes = "文件不可写";
        break;
      case 8:
        $mes = "由于PHP的扩展程序中断了文件上传";
        break;
    }

6.限制文件类型

if($file['error'] == UPLOAD_ERR_OK){
      $ext = getExt($file['name']);
      if(!in_array($ext, $allowExt)){
        exit("非法文件类型");
      }

7.限制是否为真的图片类型

if($imgFlag){
        if(!getimagesize($file['tmp_name'])){
          exit("不是真的图片类型");
        }
      }

8.判断文件大小

if($file['size'] > $maxSize){
        exit("文件过大");
      }

9.判断文件是否通过post上传

if(!is_uploaded_file($file[‘tmp_name'])){ 
exit(“文件不是通过HTTP POST上传”); 
}

10.重命名文件(唯一且不重复)并保存到目标目录

$filename = getUniName().".".$ext;
$destination = $path."/".$filename;
if(move_uploaded_file($file['tmp_name'], $destination)){
        $mes = "文件上传成功";
        $file['name'] = $filename;
        unset($file['error'], $file['tmp_name']);
        $uploadedFiles[$i] = $file;
        $i++;
      }

重写文件信息数组中的name,删除变量file[‘error']和file[‘tmp_name']。最后将成功上传的文件保存到uploadedFiles数组中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP模拟SQL Server的两个日期处理函数
Oct 09 PHP
一个高ai的分页函数和一个url函数
Oct 09 PHP
我的论坛源代码(七)
Oct 09 PHP
php 动态多文件上传
Jan 18 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
php通过curl模拟登陆DZ论坛
May 11 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
Oct 22 PHP
微信公众号开发之通过接口删除菜单
Feb 20 #PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 #PHP
php防止sql注入的方法详解
Feb 20 #PHP
php获取给定日期相差天数的方法分析
Feb 20 #PHP
phpstudy默认不支持64位php的解决方法
Feb 20 #PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 #PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 #PHP
You might like
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
Javascript中的数学函数集合
2007/05/08 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
用nodejs实现PHP的print_r函数代码
2014/03/14 NodeJs
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
javascript实现不同颜色Tab标签切换效果
2016/04/27 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
2016/11/16 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
Python基于贪心算法解决背包问题示例
2017/11/27 Python
tensorflow获取变量维度信息
2018/03/10 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
波兰在线杂货店:Polski Koszyk
2019/11/02 全球购物
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
2014年学校德育工作总结
2014/12/05 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
教师节主题班会方案
2015/08/17 职场文书
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL