You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP多图上传时sizeof($_FILES['imgs'])返回值偏大导致下标越界报错

问题根源分析
  • 你对PHP多文件上传时的$_FILES结构理解有误:当使用name="imgs[]"的多文件上传表单时,$_FILES['imgs']顶层固定包含name/type/tmp_name/error/size共5个键,所以你调用sizeof($_FILES['imgs'])得到的数值永远是5,根本不是上传的文件数量。
  • 你循环的上限是$max-1也就是4,当你上传的文件数量少于4个的时候,访问$_FILES["imgs"]["name"][$i]就会出现下标越界的Undefined array key警告,和你遇到的报错完全吻合。
修复方案

把获取文件数量的逻辑改成读取$_FILES['imgs']['name']的长度即可,同时优化循环判断逻辑,避免上传出错时产生额外警告,修复后的代码片段如下:

if(isset($_POST["upload"])){
    //require '../utils/sql.php';
    //$stmt=$mysql->prepare("INSERT INTO DEALS (USER, TITLE, DESCR, COST, IMGS, ST) VALUES ()");
    var_dump($_FILES['imgs']);
    // 修正:取name数组的长度才是实际上传的文件数量
    $fileCount = sizeof($_FILES['imgs']['name']);
    echo "上传文件数量:".$fileCount;
    for($i = 0; $i < $fileCount; $i++)
    {
      ?><br/><?php
      // 增加错误判断,避免文件上传失败时的额外警告
      if($_FILES["imgs"]["error"][$i] === UPLOAD_ERR_OK) {
          echo($_FILES["imgs"]["name"][$i]." ,  ".$_FILES["imgs"]["type"][$i]." ,  ".$_FILES["imgs"]["tmp_name"][$i]." ,  ".$_FILES["imgs"]["error"][$i]." ,  ".$_FILES["imgs"]["size"][$i]);
      } else {
          echo "第".($i+1)."个文件上传失败,错误码:".$_FILES["imgs"]["error"][$i];
      }
    }
}

内容的提问来源于stack exchange,提问作者highling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 00:45:05