Image1 :<input name="image1" type="file" /> Image2 :<input name="image2" type="file" /> Image3"> Image1 :<input name="image1" type="file" /> Image2 :<input name="image2" type="file" /> Image3"> Image1 :<input name="image1" type="file" /> Image2 :<input name="image2" type="file" /> Image3" />

複数のアップロード画像関数PHP?

こんにちは私は以下の1つの提出で複数の画像をアップロードできる機能を私のコード構造です。

<form action="upload.php" method="post" enctype="multipart/form-data">
  

Image1 :<input name="image1" type="file" />

Image2 :<input name="image2" type="file" />

Image3 :<input name="image3" type="file" />

<input type="submit" value="Submit" /> </form> include('configdb.php'); $uploadDir = 'upload/'; if(isset($_POST['submit'])) { $fileName = $_FILES['image1']['name']; $tmpName = $_FILES['image1']['tmp_name']; $fileSize = $_FILES['image1']['size']; $fileType = $_FILES['image1']['type']; $image1path = $uploadDir . $fileName; $result = move_uploaded_file($tmpName, "$image1path"); if (!$result) { echo "Error uploading"; exit; } if(!get_magic_quotes_gpc()) { $fileName = addslashes($fileName); $image1 = addslashes($image1path); } $sql="INSERT INTO picture (image1, image2, image3) VALUES ('$image1','$image2', $image3)"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } }

基本的に私のコードは1つの画像のアップロードを行います、3つの画像をアップロードできるようにするにはどうしたらいいですか?

0
foreach($ _FILES as $ name => $ file)が始まります...
追加された 著者 deceze,
あなたはアップロードエラーをチェックし、すべてが正常に動作していると仮定しています。行く悪い方法...非常に悪い。
追加された 著者 Marc B,
if($ _FILES ['image1'] ['error']!== UPLOAD_ERR_OK){...アップロードに失敗しました...}
追加された 著者 Marc B,
@MarcB 3つの画像のテストアップロードがうまく動作した後にバリデーションを追加します:)あなたが本当にありがとうございました:)
追加された 著者 noviceRick,

2 答え

次のようなことを試してください:

...
$images = array();
foreach (array('image1', 'image2', 'image3') as $name) {
    $images[$name] = new stdClass();
    $images[$name]->fileName = $_FILES[$name]['name'];
    $images[$name]->tmpName  = $_FILES[$name]['tmp_name'];
    $images[$name]->fileSize = $_FILES[$name]['size'];
    $images[$name]->fileType = $_FILES[$name]['type'];

    $images[$name]->path = $uploadDir . $images[$name]->fileName;

    $result = move_uploaded_file($images[$name]->tmpName, $images[$name]->path);
    if (!$result) {
        echo "Error uploading";
        exit;
    }

    $images[$name]->sql = mysql_real_escape_string($images[$name]->path);
}

$sql="INSERT INTO picture (image1, image2, image3) VALUES ({$images['image1']},{$images['image2']},{$images['image3']})";
...
1
追加された
@Petah、stdObjectの代わりにstdClassでなければならない
追加された 著者 robert,
@Petah私はこのエラーを受け取ります。致命的なエラー:クラス 'stdObject'がCに見つかりません。また、// * $ images [$ name] =新しいstdObject();私はこのエラーを受け取ります。Strict Standards:空の値からデフォルトオブジェクトを作成します。ありがとう
追加された 著者 noviceRick,
@robertあなたが言ったことを変更し、私はエラーを受け取ります:列のカウントは行1の値のカウントと一致しませんSQLステートメントの行でこれキャッチ可能な致命的なエラー:クラスstdClassのオブジェクトは文字列に変換できませんでした
追加された 著者 noviceRick,

ここに複数の画像をアップロードするためのコードがあります。 3枚以上の画像をアップロードできます。

<form action="upload.php" method="post" enctype="multipart/form-data">
  

Image1 :<input name="image[]" type="file" />

Image2 :<input name="image[]" type="file" />

Image3 :<input name="image[]" type="file" />

<input type="submit" name="submit" value="Submit" /> </form> <?php include('configdb.php'); $uploadDir = 'upload/'; if(isset($_POST['submit'])) { $image = array(); foreach($_FILES['image']['name'] as $index => $name) { if($_FILES['image']['error'][$index] == 4) { continue; } if($_FILES['image']['error'][$index] == 0) { $fileName = $_FILES['image']['name'][$index]; $tmpName = $_FILES['image']['tmp_name'][$index]; $fileSize = $_FILES['image']['size'][$index]; $fileType = $_FILES['image']['type'][$index]; if(($fileType == "image/gif" || $fileType == "image/jpeg" || $fileType == "image/pjpeg" || $fileType == "image/png" || $fileType == "image/x-png") && $fileSize < 500000) { $imagePath = $uploadDir . $fileName; $result = @move_uploaded_file($tmpName, $imagePath); if (!$result) { echo "Error uploading"; exit; } $image[] = $imagePath; } } } //Save images to database $nbImage = count($image); if($nbImage) { $sql = "INSERT INTO picture (image1, image2, image3) VALUES ("; for($i=0; $i<$nbImage; $i++) { if($i) $sql .= ","; $sql .= "\"".$image[$i]."\""; } $sql .= ")"; @mysql_query($sql); } } ?>

注意:セキュリティのためアップロードする前に画像のタイプとサイズをテストする必要があります。

1
追加された
私は私のコードを編集します:D
追加された 著者 Kannika,
私はあなたのフォームを編集するだけです。あなたはname = "submit"を追加していないのはなぜですか? :)
追加された 著者 Kannika,
私はすでにそれをテストし、それはうまく動作します。あなたの許可のアップロードディレクトリをチェックしてください。また、エラーを印刷して問題を解決することもできます。
追加された 著者 Kannika,
私はあなたのコードをテストするが、それはフォームファイルを提出したような "イメージ"と置き換えると、それをundefind写真を言った仕事をdoesnt。それは動作しません:(
追加された 著者 noviceRick,
私はあなたのコードをコピーして、もう一度やってみてくださいが、それはあまりにも動作しません、それはディレクトリやデータベースに画像を保存doesnt
追加された 著者 noviceRick,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com