$_FILES helps you get information about files users upload through a form. It makes handling uploads easy.
$_FILES for file uploads in PHP
$_FILES['input_name']['property']
input_name is the name attribute of the file input in your HTML form.
property can be name, type, tmp_name, error, or size.
$_FILES['photo']['name']
$_FILES['document']['size']
$_FILES['avatar']['tmp_name']
This program shows a simple file upload form. When you pick a file and submit, it prints the file name and size if the upload worked.
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_FILES['myfile']) && $_FILES['myfile']['error'] === 0) { $filename = $_FILES['myfile']['name']; $filesize = $_FILES['myfile']['size']; echo "File uploaded: $filename<br>"; echo "Size: $filesize bytes<br>"; } else { echo "No file uploaded or there was an error."; } } ?> <form method="post" enctype="multipart/form-data"> <label for="myfile">Choose a file:</label> <input type="file" name="myfile" id="myfile"> <button type="submit">Upload</button> </form>
Always use enctype="multipart/form-data" in your form tag to allow file uploads.
Check $_FILES['input_name']['error'] to make sure the upload succeeded before using the file.
Files are stored temporarily on the server. Use move_uploaded_file() to save them permanently.
$_FILES holds info about uploaded files from a form.
Use the file input's name to access its data in $_FILES.
Check for errors and file size before saving the file.
Practice
$_FILES superglobal in PHP store?Solution
Step 1: Understand the purpose of
$_FILES$_FILESis a special PHP variable that holds details about files uploaded through a form.Step 2: Compare with other options
User session data is stored in$_SESSION, database details are not stored here, and server variables are in$_SERVER.Final Answer:
Information about files uploaded via an HTML form -> Option CQuick Check:
$_FILES= Uploaded file info [OK]
- Confusing $_FILES with $_SESSION
- Thinking $_FILES holds server info
- Assuming $_FILES stores form text inputs
userfile?Solution
Step 1: Recall the structure of $_FILES
Each uploaded file's info is stored in an array with keys like 'name', 'type', 'tmp_name', 'error', and 'size'.Step 2: Identify the correct key for the original filename
The key for the original filename is 'name', not 'filename' or 'file_name'.Final Answer:
$_FILES['userfile']['name'] -> Option DQuick Check:
Filename key = 'name' [OK]
- Using 'filename' or 'file_name' instead of 'name'
- Confusing keys with other $_FILES elements
- Trying to access $_POST for file names
if ($_FILES['pic']['error'] === 0) {
echo $_FILES['pic']['name'];
} else {
echo 'Upload failed';
}Solution
Step 1: Check the error code for the uploaded file
An error code of 0 means the upload was successful with no errors.Step 2: Output the original filename
Since error is 0, the code echoes the original filename stored in$_FILES['pic']['name'], which is 'photo.jpg'.Final Answer:
photo.jpg -> Option AQuick Check:
Error 0 means success, so filename prints [OK]
- Assuming error 0 means failure
- Printing error code instead of filename
- Not checking if 'pic' index exists
if ($_FILES['upload']['error'] == 0) {
move_uploaded_file($_FILES['upload']['name'], 'uploads/' . $_FILES['upload']['name']);
echo 'File saved';
} else {
echo 'Error uploading';
}Solution
Step 1: Understand move_uploaded_file parameters
The first parameter must be the temporary file path stored intmp_name, not the original filename.Step 2: Identify the incorrect usage
The code incorrectly uses$_FILES['upload']['name']as the source file, which is wrong and causes failure.Final Answer:
Using 'name' instead of 'tmp_name' in move_uploaded_file -> Option BQuick Check:
move_uploaded_file needs tmp_name as source [OK]
- Using original filename instead of temp file path
- Ignoring error codes before moving files
- Not validating file size or type
if (/* condition here */) {
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
echo 'Upload successful';
} else {
echo 'Upload failed';
}Solution
Step 1: Check for no upload errors
The error code must be exactly 0 to confirm no errors during upload.Step 2: Check file size limit
The file size must be less than 2MB (2 * 1024 * 1024 = 2097152 bytes).Step 3: Combine conditions correctly
Both conditions must be true, so use logical AND (&&) with strict equality and less-than size check.Final Answer:
if ($_FILES['file']['error'] === 0 && $_FILES['file']['size'] < 2097152) -> Option AQuick Check:
Error 0 and size < 2MB = correct check [OK]
- Using || instead of && for conditions
- Checking error != 0 instead of === 0
- Confusing size units or limits
Ready to prove it?
Pass the test and this pattern moves unknown
