0

我正在构建一个可以上传单个图像或多个图像的函数,具体取决于它是否来自字段数组。

这是函数和调用者:

private function imageUpload($image, $altText, $uploadDir)
{

    $uploadDir = (!substr($uploadDir, "/")) ? $uploadDir."/" : $uploadDir;
    print_r($_POST[$image]);
    if(is_array($_POST[$image]))
    {

        foreach($_FILES[$image] as $image)  //Line 316
        {

            //$targetPath = $uploadDir.basename($image['name']);
            //echo $targetPath;
            echo "array";

        }

    }
    else
    {

        $targetPath = $uploadDir.basename($image['name']);
        //echo $targetPath;
        echo "not array";

    }

}

$this->imageUpload('pei_image', 'pei_alt', '/images/upload/products/');

我尝试在 pei_image[] 字段中使用 1/2 图像字段,但出现以下错误:

遇到 PHP 错误

严重性:通知消息:未定义索引:pei_image

文件名:models/products_model.php

行号:316

遇到 PHP 错误

严重性:警告

消息:为 foreach() 提供的参数无效

文件名:models/products_model.php

行号:316

但是当我打印 $_POST[$image] 时,我得到了一个包含正确数量值的数组。结果如下:

数组([0] => 06 Lect03 WD 概念 - mod SP.png [1] => brtemplate.jpg)

怎么了?

编辑

$_FILES 数组是空的,这是为什么呢?以下是表单中的 2 个图片上传字段:

<input type="file" name="pei_image[]" value="Showing-the-Heavy-horse.jpg" class="imageUpload" onchange="removePreviewButton(this, 2);">
<input type="file" name="pei_image[]" value="Showing-the-Heavy-horse.jpg" class="imageUpload" onchange="removePreviewButton(this, 3);">
4

4 回答 4

0

代替

foreach($_FILES[$image] as $image)

经过

foreach($_FILES as $image)
于 2012-07-12T12:35:23.463 回答
0

试试这个..

private function imageUpload($image, $altText, $uploadDir)
{

    $uploadDir = (!substr($uploadDir, "/")) ? $uploadDir."/" : $uploadDir;

    if(is_array($image)
    {

        foreach($image as $img)  //Line 316
        {

            //$targetPath = $uploadDir.basename($image['name']);
            //echo $targetPath;
            echo "array";

        }

    }
    else
    {

        $targetPath = $uploadDir.basename($image['name']);
        //echo $targetPath;
        echo "not array";

    }

}

$this->imageUpload('pei_image', 'pei_alt', '/images/upload/products/');
于 2012-07-12T12:42:13.493 回答
0

假设 $image 是您的字段的名称,例如'pictures''images'其他名称,这会更好:

if (!empty($_FILES[$image])) {
    foreach ($_FILES[$image]["error"] as $key => $error) {
        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES[$image]["tmp_name"][$key];
            $name = $_FILES[$image]["name"][$key];

            // do your stuff
        }
    }
}
于 2012-07-12T12:43:37.547 回答
0

问题是我的 enctype 中的拼写错误,因此它默认为“application/x-www-form-urlencoded”,因此它不会上传到 $_FILES 数组。

于 2012-07-12T16:07:16.017 回答