PHP to upload file

In this post we are going to know how to upload file in php . file uploading in php is need some configuration before going to make file uploading script in php

Configure php.ini

In php.ini search for the file_uploads directive, and set it to On

file_uploads = On

After configuration create index.html file to create html form to upload file

Index.html

<!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>

In the above HTML form we have used post method with enctype attribute of multipart/form-data It specifies which content-type to use when submitting the form

Without post method and enctype attribute of multipart/form-data file uploading form will not work

Now HTML form will send data to the server side script where file uploading will done

Now we have to create a server side script to handle the file uploading

upload.php file contain following php code

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

Detail about the file uploading script

  • $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
  • $imageFileType holds the file extension of the file (in lower case)
  • getimagesize has been used to check image is fake or not

In the above script to upload file we have to create uploads folder where uploaded file will go

php code to check file is already available in upload.php

if (file_exists($target_file)) {
  echo “Sorry, file already exists.”;
  $uploadOk = 0;
}

php code to limit the size of file in upload.php

If the size of file will be larger than 600kB then it will throw an error

// Check file size
if ($_FILES[“fileToUpload”][“size”] > 600000) {
  echo “Sorry, your file is too large.”;
  $uploadOk = 0;
}

php code to limit the file Type

this php code in upload script will alllow only JPG, JPEG, PNG, and GIF files

// 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;
}

Complete Upload File PHP Script

upload.php

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

Leave a Comment