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] を print_r すると、正しい量の値を持つ配列が得られました。結果は次のとおりです。

配列 ( [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

問題は enctype のタイプミスだったので、デフォルトで "application/x-www-form-urlencoded" になったので、$_FILES 配列にアップロードされませんでした。

于 2012-07-12T16:07:16.017 に答える
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'or'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 に答える