html 在PHP中上传多个图像文件

aydmsdu9  于 2022-12-02  发布在  PHP
关注(0)|答案(1)|浏览(188)

我目前正在尝试上传多个图像文件,但我遇到了一些错误,如下:
注意:未定义的索引:第25行上的产品图片
注意:尝试访问第25行D:\laragon\www\byte\add_product. php中null类型值的数组偏移量
警告:count():参数必须是一个数组或一个对象,该对象在第25行的D:\laragon\www\byte\add_product.php中实现Countable
下面是从第25行到第40行的PHP代码:

$totalFile = count($_FILES['productPic']['name']);   //line 25
 
for($i=0; $i<$totalFile; $i++)
{
  //ensure the file path is exist
  if($_FILES['productPic']['tmp_name'][$i] != "")
  {
    // upload the file into the temp directory
    if(move_uploaded_file($_FILES['productPic']['tmp_name'][$i],$_FILES['productPic']['name'][$i]))
    {
      $upload = 1;
      $pic[$i] == $_FILES['productPic']['name'][$i];
    }
  }
}

下面是部分HTML代码:

<form class="w-100" name="addProductForm" method="POST" action="add_product.php">
    .
    .
    <div class="row">
        <div class="col form-group">
            <input type="file" class="form-control py-1" name="productPic[]" accept="image/*" multiple required>
        </div>
    </div>
    .
    .
</form>
syqv5f0l

syqv5f0l1#

您的代码中有两个问题
(A)确保在form标记中有enctype='multipart/form-data'
所以HTML应该像:

<form class="w-100" name="addProductForm" method="POST" enctype='multipart/form-data' action="add_product.php">
    <div class="row">
        <div class="col form-group">
            <input type="file" class="form-control py-1" name="productPic[]" accept="image/*" multiple required>
        </div>
    </div>
<input type=submit>
</form>

(B)PHP中的以下行不正确(您需要的是赋值运算符,而不是比较运算符):

$pic[$i] == $_FILES['productPic']['name'][$i];

应该是

$pic[$i] = $_FILES['productPic']['name'][$i];

所以PHP应该是这样的:

<?php
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

$totalFile = count($_FILES['productPic']['name']);

for($i=0; $i<$totalFile; $i++) {
            // ensure the file path is exist
            if($_FILES['productPic']['tmp_name'][$i] != "") {
               if (move_uploaded_file($_FILES['productPic']['tmp_name'][$i],$_FILES['productPic']['name'][$i])){
                    $upload = 1;
                    $pic[$i] = $_FILES['productPic']['name'][$i];
                }
            }
}

var_dump($pic);
?>

最后但同样重要的是,确保目录为writable,否则上载将失败

相关问题