First, ensure that PHP is configured to permit file uploads.
In your “php.ini” file, locate the file_uploads directive and set it to On:
| file_uploads = On |
Next, create an HTML form that enables users to select the image file they wish to upload:
| <!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> |
Here are some rules to follow for the HTML form:
method="post".enctype="multipart/form-data", which specifies the content type for submitting the form.Without these settings, the file upload will not function.
Additional notes:
type="file" attribute of the <input> tag displays a file-select control with a “Browse” button next to it.The “upload.php” file contains the code necessary for handling file uploads.
| <?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 = getimagesize($_FILES[“fileToUpload”][“tmp_name”]); if($check !== false) { echo “File is an image – “ . $check[“mime”] . “.”; $uploadOk = 1; } else { echo “File is not an image.”; $uploadOk = 0; } } ?> |
Here’s an explanation of the PHP script:
$target_dir = "uploads/" specifies the directory where the file will be stored.$target_file defines the path for the file to be uploaded.$uploadOk = 1 is a placeholder variable that will be used later.$imageFileType holds the file extension of the uploaded file (in lowercase).Next, verify whether the image file is a genuine image or a fake one.
| Note: You need to create a new directory named “uploads” in the same directory where the “upload.php” file is located. This is where the uploaded files will be saved. |
Next, we’ll implement some restrictions.
First, we’ll check if the file already exists in the “uploads” folder. If it does, an error message will be displayed, and $uploadOk will be set to 0.
| // Check if file already exists if (file_exists($target_file)) { echo “Sorry, file already exists.”; $uploadOk = 0; } |
The file input field in our HTML form is labeled “fileToUpload.”
Next, we will check the file size. If the file exceeds 500KB, an error message will be displayed, and $uploadOk will be set to 0.
| // Check file size if ($_FILES[“fileToUpload”][“size”] > 500000) { echo “Sorry, your file is too large.”; $uploadOk = 0; } |
The code below restricts file uploads to only JPG, JPEG, PNG, and GIF formats. If a user tries to upload a file of a different type, an error message will be displayed, and $uploadOk will be set to 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; } |
The complete “upload.php” file now appears as follows:
| <?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 = getimagesize($_FILES[“fileToUpload”][“tmp_name”]); if($check !== false) { echo “File is an image – “ . $check[“mime”] . “.”; $uploadOk = 1; } else { echo “File is not an image.”; $uploadOk = 0; } } // 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 “. htmlspecialchars( basename( $_FILES[“fileToUpload”][“name”])). ” has been uploaded.”; } else { echo “Sorry, there was an error uploading your file.”; } } ?> |