Gayan Chaturanga
Gayan Chaturanga

Reputation: 57

Add more Images by php form

I want to prepare 5 photo upload form and user need to select all 5 photo at once and the submit the form then i need to store all 5 photos in the Target Directory by renaming image as "1.jpg, 2.jpg, 3.jpg, 4.jpg, 5.jpg". I stored only one image but after add For loop for save more than one file its not working ....please support.

// Image Upload FORM

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

    <h1>Upload Your Innovation</h1
    <fieldset>
        <legend><span class="number">4</span>Upload Images</legend>

        <input type="file" name="img1" id="img1" > 
        </br>
        <input type="file" name="img2" id="img2"> 
        </br>
        <input type="file" name="img3" id="img3"> 
        </br>
        <input type="file" name="img4" id="img4"> 
        </br>
        <input type="file" name="img5" id="img5">
        </br>
    </fieldset>
    <button type="submit">Submit</button>
</form>

saveinntion.php file

<?php
include("dbconnection.php");
$target_dir = "Upload/";
$img=$_POST['img'];

for ($i = 0; $i < 5; $i++) {
    $target_file = $target_dir . basename($_FILES['$img[]']["name"]);
    $uploadOk = 1;
    $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

    if (file_exists($target_file)) {
        echo "Sorry, file already exists.";
        $uploadOk = 0;
    }

    if ($_FILES['$img[]']["size"] > 500000) {
        echo "Sorry, your file is too large.";
        $uploadOk = 0;
    }

    if($imageFileType != "jpg" && $imageFileType != "jpeg" ) {
        echo "Sorry, only JPG &  JPEG files are allowed.";
        $uploadOk = 0;
    }

    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    } else {
        if (move_uploaded_file($_FILES['$img[]']["tmp_name"], $target_file)) {
            echo "The file ". basename( $_FILES['$img[]']["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    }
}
header("Location: upload1.php?id=$msg");
?>

Upvotes: 0

Views: 269

Answers (1)

reza
reza

Reputation: 1507

Your problem is with your naming. as @Twinfriends said in the command it is highly unlikely to upload any file

replace $_FILES['$img[]'] with $_FILES['img'.($i+1)] in your code.

line # 5

$target_file = $target_dir . basename($_FILES['img'.($i+1)]["name"]);

line #13

if ($_FILES['img'.($i+1)]["size"] > 500000) {

line #25

if (move_uploaded_file($_FILES['img'.($i+1)]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES['img'.($i+1)]["name"]). " has been   uploaded.";

To renaming file.

$imageFileType = pathinfo($_FILES['img'.($i+1)]["name"],PATHINFO_EXTENSION); 
$target_file = $target_dir . ($i+1).".".$imageFileType;

Upvotes: 2

Related Questions