How can PHP be used to retain user input in a file upload form to prevent reselecting the file?

When a user submits a form with a file upload field and encounters an error on the server side, they may need to reselect the file to upload it again. To prevent users from having to reselect the file, you can use PHP to retain the user input by storing the file information in a session variable. This way, if there is an error, the form can be pre-filled with the previously uploaded file.

<?php
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $_SESSION['file'] = $_FILES['file'];
    // Process the file upload and handle any errors
    // If there is an error, the form will be prefilled with the previously uploaded file
}
?>

<form method="post" enctype="multipart/form-data">
    <input type="file" name="file" <?php if(isset($_SESSION['file'])) echo 'value="' . $_SESSION['file']['name'] . '"' ?>>
    <input type="submit" value="Upload">
</form>