Get PHP Uploaded File Temporary Path Before Moving

When handling file uploads in PHP, files are temporarily stored in a default directory on the server before they are moved to their permanent destination. This article explains how to quickly retrieve this temporary file path using the $_FILES superglobal array, allowing you to validate, read, or process the file before executing the final move.

Accessing the Temporary Path via $_FILES

When a file is uploaded via an HTTP POST request, PHP automatically stores information about the upload in the $_FILES superglobal array. To find the temporary location of the file on the server, you access the tmp_name key of the uploaded file’s array.

Here is the basic syntax:

$temporaryPath = $_FILES['input_field_name']['tmp_name'];

In this snippet, input_field_name corresponds to the name attribute of the <input type="file"> tag in your HTML form.

Step-by-Step Code Example

Below is a practical PHP example demonstrating how to safely check for an uploaded file and retrieve its temporary path before performing any actions like moving or renaming.

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Check if the file input exists and there are no upload errors
    if (isset($_FILES['user_document']) && $_FILES['user_document']['error'] === UPLOAD_ERR_OK) {
        
        // Retrieve the temporary file path
        $tempFilePath = $_FILES['user_document']['tmp_name'];
        
        // Output the path or perform validation (e.g., mime-type check)
        echo "The temporary file is stored at: " . htmlspecialchars($tempFilePath);
        
        // Example validation before moving
        if (filesize($tempFilePath) > 5000000) {
            echo "File is too large.";
        } else {
            // Proceed to move the file using move_uploaded_file()
        }
        
    } else {
        echo "No file was uploaded or an error occurred during upload.";
    }
}
?>

Important Considerations