Curriculum
Course: PHP Basic
Login

Curriculum

PHP Basic

PHP Install

0/1

PHP Casting

0/1

PHP Constants

0/1

PHP Magic Constants

0/1

PHP Operators

0/1

PHP Reference

0/276
Text lesson

PHP File Upload

Configure The “php.ini” File

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

Create The HTML Form

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:

  • Ensure the form uses method="post".
  • Include the attribute enctype="multipart/form-data", which specifies the content type for submitting the form.

Without these settings, the file upload will not function.

Additional notes:

  • The type="file" attribute of the <input> tag displays a file-select control with a “Browse” button next to it.
  • The form sends data to a file named “upload.php”, which we will create next.

Create The Upload File PHP Script

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.

Check if File Already Exists

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

Limit File Size

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

Limit File Type

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

Complete Upload File PHP Script

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