Skip to content
Advertisement

File upload not working in the php back-end. No file being found once I read it

I have made a form on php and I am adding an image input option there.

<form action="./assets/actions/gallery_post.php" id="upload-form" method="POST">
            <input type="text" name="title" placeholder="Image title..." class="form-control" required>
            <br>
            <input type="text" name="description" placeholder="Image description..." class="form-control">
            <br>
            <input type="file" name="file", class="form-control" required>
            <br>
            <button type="submit" name="picture-submit" class="form-control submit">Upload Photo</button>
        </form>

The following is my php code to upload the file.

// Check if the button was pressed
if (isset($POST['picture-submit'])) {
    echo "Entered"; 
    // Get the inputs
    $newfilename =  'gallery';
    $title = $_POST['title'];
    $description = $_POST['description'];

    $file = $_FILES['file'];
    if($file){
        echo "FILE";
    }else{
        echo "No File found";
    }
    console.log($file);

    // Obtaining some file information
    $fileName = $file['name'];
    $fileTmpName = $file['tmp_name'];
    $fileError = $file['error'];
    $fileType = $file['type'];

    // Checking file extensions
    $fileExt = explode('.', $fileName);
    $fileActualExt = strtolower(end($fileExt));
    echo "$fileActualExt";

    // Allowed extensions
    $allowed = array('jpeg', 'jpg', 'png', 'JPG');

    // if extension is allowed 
    if(in_array($fileActualExt, $allowed)){
        // check if any error
        if($fileError === 0){
                // Creating a unique file name
                $fileNew = $newfilename. "." . uniqid('', true) . "." . $fileActualExt;
                $fileDest = "assets/images/gallery/" . $fileNew;

                // Function to upload file
                move_uploaded_file($fileTmpName, $fileDest);

                // Making a database connection
                include_once ('dbh.php'); 

                $stmt = mysqli_stmt_init($conn);

                // Move to the database as well using prepared statements
                $sql = "INSERT into gallery(location, title, description) VALUES(?, ?, ?)";
                echo $sql;

                // Binding parameters
                mysqli_stmt_bind_param($stmt, "sss", $fileDest, $title, $description);
                mysqli_stmt_execute("$stmt");

                // Perform a query, check for error
                mysqli_query($conn, $sql) or die(mysqli_error($conn));
                echo "Query Sent";

                header("Location: ../gallery.php?upload=sucess");

        }else {
            echo "There was an error in file upload.";
        }
    }else {
        echo "You cannnot upload files of this type!";
    }
}

It is not even entering the if condition in the above scenario. When I remove the if condition, I get “No file Found”. Sort of stumped here now because I have made it work in the past. I even tried the basic HTML query format like this mysqli_query($conn, $sql) or die(mysqli_error($conn)); and this does not work either.

Advertisement

Answer

Your form tag has to be enabled enctype="multipart/form-data".

Try this code.

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {

  // Check if file already exists
  if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
  }
  // Check file size
  if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
  }

  // Allow certain file formats
  if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  && $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
  }

  // Check if $uploadOk is set to 0 by an error
  if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
  // if everything is ok, try to upload file
  } else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
      echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
      echo "Sorry, there was an error uploading your file.";
    }
  }
}

?>
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement