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