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."; } } } ?>