0

HTMLフォームから配列内のファイルを取得して、データベースに保存しようとしています。次のコードを書きましたが、多くのエラー メッセージが表示されます。主な問題は、配列を文字列に変換していないことです。

よろしくお願いします。

Line 27 : $image_name=        $_FILES["files"]["name"];  

LINE 29:  $random_name=       rand().$_FILES["files"]["name"];

$_FILES 出力

配列 ( [ファイル] => 配列 ( [名前] => 配列 ( [0] => ブレスレット_ゴールド.jpg [1] => ネックレス_シルバー.png [2] => ブローチ_ゴールド.png ) [タイプ] => 配列 ( [0] ] => image/jpeg [1] => image/png [2] => image/png ) [tmp_name] => Array ( [0] => F:\xampp\tmp\php599C.tmp [1] => F:\xampp\tmp\php599D.tmp [2] => F:\xampp\tmp\php599E.tmp ) [エラー] => 配列 ( [0] => 0 [1] => 0 [2] => 0 ) [サイズ] => 配列 ( [0] => 7150 [1] => 37867 [2] => 314296 ) ) )

<body>

<form action="" method="post" enctype="multipart/form-data">
<p>Pictures:
<input type="file" name="files[]" />
<input type="file" name="files[]" />
<input type="file" name="files[]" />
<input type="submit" value="Send" />
</p>
</form>

</body>
</html>

<?php

include 'connect.php';

if (isset($_FILES['files'])
    ||  ($_FILES["files"]["type"]   == "image/jpeg"))
    {

    foreach($_FILES['files']['tmp_name'] as $key=> $tmp_name)
        {
            //echo $tmp_name."<br>";

        echo    $image_name=        $_FILES["files"]["name"];  

            $random_name=       rand().$_FILES["files"]["name"];

            $folder="upload/products/" .$random_name;                       

            move_uploaded_file($_FILES["files"]["tmp_name"],
                        "upload/products/" . $random_name);




            $sql = "Insert into product_images (product_id,name,images) 
                            VALUES ($current_id,'$image_name', '$folder')";

                            if (mysql_query($sql))
                            {
                                echo 'Done';
                                }

                                else
                                {
                                    echo mysql_error();
                                    }


        }

    }

?> 

Notice: 27 行目の F:\xampp\htdocs\CMS\array_upload.php での配列から文字列への変換 Array Notice: 29 行目の F:\xampp\htdocs\CMS\array_upload.php での配列から文字列への変換

警告: move_uploaded_file() は、パラメーター 1 が文字列であると想定し、配列は F:\xampp\htdocs\CMS\array_upload.php 行 34 で指定されます

4

2 に答える 2

3

$_FILES["files"]["tmp_name"] は、受信しているファイルの配列です。したがって、次のことを行う必要があります。

move_uploaded_file($_FILES["files"]["tmp_name"][$key],
                        "upload/products/" . $random_name);

または、 $tmp_name で現在の一時名を受け取っているので、次を使用できます。

move_uploaded_file($tmp_name,
                            "upload/products/" . $random_name);
于 2013-08-13T10:45:25.017 に答える
1

27行目と29行目で試してください $_FILES['files']['name'][$key]

また、move_uploaded_file の最初のパラメーターを $tmp_name に置き換えます

move_uploaded_file($tmp_name,
于 2013-08-13T10:49:30.747 に答える