How to upload image and PDF file using PHP

Here is a PHP script that allows users to upload image and PDF files with a maximum size of 5 MB. The uploaded files will be renamed using the current timestamp:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_FILES["file"])) {
    $allowedExtensions = array("jpg", "jpeg", "png", "pdf");
    $maxFileSize = 5 * 1024 * 1024; // 5 MB in bytes

    $targetDirectory = "uploads/";
    $timestamp = time();
    $targetFileName = $timestamp . "_" . basename($_FILES["file"]["name"]);
    $targetPath = $targetDirectory . $targetFileName;
    
    $fileExtension = strtolower(pathinfo($targetFileName, PATHINFO_EXTENSION));

    if (in_array($fileExtension, $allowedExtensions) && $_FILES["file"]["size"] <= $maxFileSize) {
        if (move_uploaded_file($_FILES["file"]["tmp_name"], $targetPath)) {
            echo "File uploaded successfully.";
        } else {
            echo "Error uploading file.";
        }
    } else {
        echo "Invalid file. Allowed file types: jpg, jpeg, png, pdf. Max file size: 5 MB.";
    }
}
?>

This is HTML form for file upload.

<!DOCTYPE html>
<html>
<head>
    <title>File Upload</title>
</head>
<body>
    <form method="POST" enctype="multipart/form-data">
        <input type="file" name="file" accept=".jpg, .jpeg, .png, .pdf" required>
        <button type="submit">Upload</button>
    </form>
</body>
</html>

Here’s what the script does:

  1. It checks if the form has been submitted and if a file has been uploaded.
  2. It sets the allowed file extensions ($allowedExtensions) and maximum file size ($maxFileSize).
  3. It defines the target directory ($targetDirectory), generates a new file name using the current timestamp, and constructs the target path.
  4. It checks if the uploaded file has an allowed extension and if its size is within limits.
  5. If the file meets the criteria, it moves the file to the target directory using move_uploaded_file() and echoes a success message.
  6. If the file does not meet the criteria, it echoes an error message.
  7. The HTML form allows users to select a file with the accept attribute specifying the allowed file types. After submitting the form, the PHP script processes the file upload.