Search code examples
phpfile-uploadmultiple-file-upload

Why is my PHP code giving file not found error for this code?


I am trying to post a multiple files to server. I have written a demo code which works perfectly. However, when I integrated it with my main program; it gives me a file not found error. Heres my code:

<body>
    <div class="container well" style="margin-top: 50px">
        <form id="profile-form" action="" method="post">
        <div class="row">
            <div class="form-group col-md-2">
                <label style="padding-left:20px;padding-top:10px">Upload image<strong> (5 images required)<strong></label>
            </div>
            <div class="form-group col-md-4">
                <input class="form-control" type="file" name="files[]" id="uploaded_files" accept="png|jpg|jpeg" required="required" multiple>
            </div>
        </div>
        </form>
</body>

This is my php code..

<?php
if(isset($_POST['submit'])){

        $firstName = trim($_POST['name']);
        $middleName = trim($_POST['middleName']);

        $uploadedImage = array();
        $uploadedImageName = array();

        if(isset($_FILES['files']['tmp_name'])){

            $num_files = count($_FILES['files']['tmp_name']);
            echo $num_files;


            if($num_files == 5){
                for($i = 0; $i < $num_files; $i++){

                    $imgName = addslashes($_FILES['files']['tmp_name'][$i]);
                    $name = addslashes($_FILES['files']['name'][$i]);

                    if($_FILES['files']['tmp_name'][$i] != ""){

                        $imageContents = file_get_contents($imgName);
                        $encodedImage[$i] = base64_encode($imageContents);

                        $filename[$i] = $_FILES['files']['name'][$i];

                        array_push($uploadedImageName, $filename[$i]);
                        array_push($uploadedImage, $encodedImage[$i]);

                        echo "I got the file..<br>";

                        echo ",,".$filename[$i];
                        echo $encodedImage[$i];
                    }   
                }
            } else{
                echo "Number of files should be equal to 5";
                return;
            }

        } else{
            echo "Files not found..";
        }
$mysqli = new mysqli("localhost", "root", "", "people");

        if(mysqli_connect_error()){
            echo mysqli_connect_error();
            exit;
        } 

// insert and execute query
?>

Solution

  • You have missing enctype="multipart/form-data"> in your form tag

    Your form element would be

    <form id="profile-form" action="" method="post" enctype="multipart/form-data">