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

发布时间 - 2026-01-10 23:11:02    点击率:

上传多文件

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多文件上传例子  # php多文件上传代码  # 简单PHP上传图片、删除图片实现代码  # PHP文件上传实例详解!!!  # 简单的PHP图片上传程序  # PHP 上传文件大小限制  # PHP 图片文件上传实现代码  # php 文件上传实例代码  # php上传文件中文文件名乱码的解决方法  # 两种php实现图片上传的方法  # PHP实现视频文件上传完整实例  # 上传  # 文件上传  # 组中  # 扩展名  # 重写  # 在对  # 过大  # 表单  # 转换成  # 大家多多  # 是否存在  # 不是真的  # 重命名  # 并保存  # 判断是否  # 保存文件  # 超过了  # gif  # move_uploaded_file  # return 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何使用 jQuery 正确渲染 Instagram 风格的标签列表  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  JS弹性运动实现方法分析  成都网站制作公司哪家好,四川省职工服务网是做什么用?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  无锡营销型网站制作公司,无锡网选车牌流程?  如何快速搭建高效可靠的建站解决方案?  如何用VPS主机快速搭建个人网站?  详解Huffman编码算法之Java实现  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  javascript如何操作浏览器历史记录_怎样实现无刷新导航  打造顶配客厅影院,这份100寸电视推荐名单请查收  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何在Tomcat中配置并部署网站项目?  如何用好域名打造高点击率的自主建站?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何快速搭建高效WAP手机网站?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  Laravel如何处理文件下载请求?(Response示例)  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何在建站之星绑定自定义域名?  如何快速搭建二级域名独立网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  香港服务器WordPress建站指南:SEO优化与高效部署策略  如何快速生成ASP一键建站模板并优化安全性?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  浅述节点的创建及常见功能的实现  香港网站服务器数量如何影响SEO优化效果?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel storage目录权限问题_Laravel文件写入权限设置  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何用景安虚拟主机手机版绑定域名建站?  如何在香港免费服务器上快速搭建网站?  如何用wdcp快速搭建高效网站?  lovemo网页版地址 lovemo官网手机登录  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Win11关机界面怎么改_Win11自定义关机画面设置【工具】