Open In App
Related Articles

PHP | $_FILES Array (HTTP File Upload variables)

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

How does the PHP file handle know some basic information like file-name, file-size, type of the file and a few attributes about the file which has been selected to be uploaded? Let’s have a look at what is playing behind the scene. $_FILES is a two-dimensional associative global array of items which are being uploaded via the HTTP POST method and holds the attributes of files such as:

AttributeDescription
[name]Name of file which is uploading
[size]Size of the file
[type]Type of the file (like .pdf, .zip, .jpeg…..etc)
[tmp_name]A temporary address where the file is located before processing the upload request
[error]Types of error occurred when the file is uploading

Now see How does the array look like??

$_FILES[input-field-name][name]
$_FILES[input-field-name][tmp_name]
$_FILES[input-field-name][size]
$_FILES[input-field-name][type]
$_FILES[input-field-name][error]

Approach: Make sure you have XAMPP or WAMP installed on your machine. In this article, we will be using the XAAMP server.

Let us go through examples, of how this PHP array works in the first example. 

Example 1 : 

HTML

<?php
 
echo "<pre>";
print_r($_FILES);
echo "</pre>";
 
?>
 
<form action="" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="Upload Image">
</form>

                    

In the above script, before uploading the file

 

Once when we select the file and upload then the function print_r will display the information of the PHP superglobal associative array $_FILES.

output array

Example 2: Add the HTML code followed by PHP script in different files. Let’s make an HTML form for uploading the file index.html 

HTML

<!DOCTYPE html>
<html>
 
<head>
    <title>GeeksForGeeks</title>
    <style type="text/css">
        div {
            background: #4CB974;
            text-align: center;
            font-size: 20px;
            padding: 30px;
            color: #fff;
            font-family: sans-serif;
        }
 
        form {
            border: 1px solid #1f1f1f;
            padding: 20px;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
        }
    </style>
</head>
 
<body>
    <form action="file-upload-manager.php" method="post" enctype="multipart/form-data">
        <!--multipart/form-data ensures that form
        data is going to be encoded as MIME data-->
 
        <h2>Upload File</h2>
        <input type="file" name="photo" id="fileSelect"><br><br>
        <input type="submit" name="submit" value="Upload"><br><br>
        <!-- name of the input fields are going to be used in our php script-->
        <div> This Video is made for GFG</div>
    </form>
</body>
 
</html>

                    

Now, time to write a PHP script which is able to handle the file uploading system. file-upload-manager.php 

PHP

<?php
   
// Check if the form was submitted
   
if ($_SERVER["REQUEST_METHOD"] == "POST") {
   
    // Check if file was uploaded without errors
   
    if (isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0) {
         
        $file_name     = $_FILES["photo"]["name"];
        $file_type     = $_FILES["photo"]["type"];
        $file_size     = $_FILES["photo"]["size"];
        $file_tmp_name = $_FILES["photo"]["tmp_name"];
        $file_error = $_FILES["photo"]["error"];
         
        echo "<div style='text-align: center; background: #4CB974;
        padding: 30px 0 10px 0; font-size: 20px; color: #fff'>
        File Name: " . $file_name . "</div>";
         
        echo "<div style='text-align: center; background: #4CB974;
        padding: 10px; font-size: 20px; color: #fff'>
        File Type: " . $file_type . "</div>";
         
        echo "<div style='text-align: center; background: #4CB974;
        padding: 10px; font-size: 20px; color: #fff'>
        File Size: " . $file_size . "</div>";
         
        echo "<div style='text-align: center; background: #4CB974;
        padding: 10px; font-size: 20px; color: #fff'>
        File Error: " . $file_error . "</div>";
         
        echo "<div style='text-align: center; background: #4CB974;
        padding: 10px; font-size: 20px; color: #fff'>
        File Temporary Name: " . $file_tmp_name . "</div>";
         
    }
}
?>

                    

Once we submit the form in the above script, we can later access the information via a PHP superglobal associative array $_FILES. Apart from using the $_FILES array, many in-built functions are playing a major role. After we are done with uploading a file, in the script we will check the request method of the server, if it is POST then it will proceed otherwise the system will throw an error. Later on, we accessed the $_FILES array to get the file name, file size, and type of the file. Once we got those pieces of information print the information of the file using echo

Output: 

 

Reference: http://php.net/manual/en/reserved.variables.files.php

PHP is a server-side scripting language designed specifically for web development. You can learn PHP from the ground up by following this PHP Tutorial and PHP Examples.



Last Updated : 06 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads