PHP (Core & Framework)

How to upload an Image file using PHP code


Uploading a image file using php code is very simple. First create an HTML form that allow users to choose the image file they want to upload:

<!DOCTYPE html>

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


Some rules to follow for the HTML form above:

  • Make sure that the form uses method=”post”
  • The form also needs the following attribute: enctype=”multipart/form-data”.

Without the requirements above, the file upload code will not work.

Other things to notice:

  • The type=”file” attribute of the <input> tag shows the input field as a file-select control, with a “Browse” button next to the input control

The form above sends data to a file called “upload.php”, which we will create next as below :

Create The Upload File PHP Script

Important points for the code in  upload.php 

  • You will need to create a new directory called “uploads” in the directory where “upload.php” file resides. The uploaded files will be saved there.
  • First, we will check if the file already exists in the “uploads” folder. If it does, an error message is displayed, and $uploadOk is set to 0:
  • The file input field in our HTML form above is named “mypic“.
  • Now, we want to check the size of the file. If the file is larger than 500KB, an error message is displayed, and $uploadOk is set to 0:
  • The code below only allows users to upload JPG, JPEG, PNG, and GIF files. All other file types gives an error message before setting $uploadOk to 0

The “upload.php” file contains the code for uploading a file:


$target_dir = “uploads/”;
$target_file = $target_dir . basename($_FILES[mypic][“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[mypic][“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[mypic][“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[mypic][“tmp_name”], $target_file)) {
echo “The file “. basename( $_FILES[mypic][“name”]). ” has been uploaded.”;
else {
echo “Sorry, there was an error uploading your file.”;


PHP script explained:

  • $target_dir = “uploads/” – specifies the directory where the file is going to be placed
  • $target_file specifies the path of the file to be uploaded
  • $uploadOk=1 is used  to display message
  • $imageFileType holds the file extension of the file (in lower case)
  • Next, check if the image file is an actual image or a fake image

Comment here