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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
Apr 28 PHP
php curl post 时出现的问题解决
Jan 30 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
PHP中使用TCPDF生成PDF文档实例
Jul 01 PHP
mac os快速切换多个PHP版本的方法
Mar 07 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
laravel migrate初学常见错误的解决方法
Oct 11 PHP
php-fpm中max_children的配置
Mar 15 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
php 输出缓冲 Output Control用法实例详解
Mar 03 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
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
MSN消息提示类
2006/09/05 Javascript
List Information About the Binary Files Used by an Application
2007/06/11 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
JS实现模拟百度搜索“2012世界末日”网页地震撕裂效果代码
2015/10/31 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
2016/11/29 Javascript
js弹出窗口简单实现代码
2017/03/22 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
JavaScript前端实现压缩图片功能
2020/03/06 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
[01:36:19]Secret vs NB 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python快速查找算法应用实例
2014/09/26 Python
Python用UUID库生成唯一ID的方法示例
2016/12/15 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
pyspark 随机森林的实现
2020/04/24 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
python 实用工具状态机transitions
2020/11/21 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
英国皇家造币厂:The Royal Mint
2018/10/05 全球购物
幼儿园教研活动方案
2014/01/19 职场文书
高中历史教学反思
2014/02/08 职场文书
四年级数学上册教学计划
2015/01/20 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
Python pygame实现中国象棋单机版源码
2021/06/20 Python
浅谈Python数学建模之固定费用问题
2021/06/23 Python
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫