To get file type, size and extension before upload in PHP; In this tutorial, you will learn how to get the file type, size, and extension before uploading it using PHP.
When building a file upload feature on a web application, it is essential to validate and retrieve the file type, size, and extension before uploading it. PHP provides various methods and functions to handle file uploads, including the $_FILES superglobal variable, which stores information about the uploaded file.
How to Get File Type, Size, Extension Before Upload in PHP
Let’s use the below given method and example for get the file type, size, and extension before uploading it using PHP:
- Retrieving File Type
- Retrieving File Size
- Retrieving File Extension
- Example 1: To get the file type, size, and extension before uploading it using PHP
Retrieving File Type
To retrieve the file type, you can use the mime_content_type() function in PHP. This function reads the first few bytes of the file and returns its MIME type.
Example:
$file_type = mime_content_type($_FILES['file']['tmp_name']);
The line of code $file_type = mime_content_type($_FILES['file']['tmp_name']);
retrieves the MIME type of the uploaded file. The mime_content_type()
function is a built-in PHP function that takes the temporary file path of the uploaded file as an argument and returns the corresponding MIME type of the file.
MIME (Multipurpose Internet Mail Extensions) type is a standardized way of identifying files on the internet based on their nature and format. For example, the MIME type of a JPEG image is image/jpeg
, while the MIME type of a PNG image is image/png
. Knowing the MIME type of the uploaded file is important because it helps to ensure that the file is of the expected type and can be processed correctly.
In the context of file uploads, it is essential to validate the file type to prevent uploading malicious files such as executable files, scripts, or files with disguised extensions. The mime_content_type()
function is a reliable method to retrieve the MIME type of the uploaded file as it uses the contents of the file to determine its type, rather than relying on the file extension.
Overall, the line of code $file_type = mime_content_type($_FILES['file']['tmp_name']);
is an essential step in retrieving the file type before uploading and validating the uploaded file to ensure the security and reliability of the web application.
Retrieving File Size
To retrieve the file size, you can use the filesize() function in PHP. This function returns the size of the file in bytes.
Example:
$file_size = filesize($_FILES['file']['tmp_name']);
In PHP, $file_size = filesize($_FILES['file']['tmp_name'])
is a line of code that retrieves the size of a file uploaded via a form.
Here’s a breakdown of how it works:
$_FILES
is a superglobal array in PHP that contains information about uploaded files. It is populated when a user submits a file upload form.['file']
is the name attribute of the file input element in the form. It tells PHP which file to retrieve information about.['tmp_name']
is a property of the file element in the $_FILES array. It contains the path to the temporary file on the server where the uploaded file is stored before it is moved to its final destination.filesize()
is a built-in PHP function that returns the size of a file in bytes. In this case, it takes the temporary file path as its argument and returns the file size in bytes.$file_size
is a variable that stores the file size value returned by thefilesize()
function.
Overall, this line of code retrieves the size of an uploaded file in bytes and assigns it to the $file_size
variable for further processing or validation. It is an important step in checking the file size before uploading it to the server to ensure that the server doesn’t run out of disk space or that the user doesn’t waste time uploading an excessively large file.
Retrieving File Extension
To retrieve the file extension, you can use the pathinfo() function in PHP. This function returns an array containing information about the file path, including the extension.
Example:
$file_extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
In the code $file_extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
, the pathinfo()
function in PHP is used to extract information about the file path. It takes two parameters: the file path and the information to be extracted.
In this case, $_FILES['file']['name']
is the file path of the uploaded file, and PATHINFO_EXTENSION
is the constant that tells the function to return only the file extension.
The function returns an associative array containing information about the file path, including the file extension. The PATHINFO_EXTENSION
constant ensures that only the extension is returned, which is then stored in the $file_extension
variable.
For example, if the uploaded file has the name “document.pdf”, the pathinfo()
function will return an array with the following elements:
Array (
[dirname] =>
[basename] => document.pdf
[extension] => pdf
[filename] => document
)
Since you only want the extension, you pass the PATHINFO_EXTENSION
constant as the second parameter to the pathinfo()
function, which returns only the file extension “pdf” in this case.
This code is useful when you need to validate the file type based on its extension, which is often used to ensure that the uploaded file is of the expected format.
Example 1: To get the file type, size, and extension before uploading it using PHP
Putting it all together, here is an example of how to retrieve the file type, size, and extension before uploading it using PHP:
<?php
if($_FILES['file']['name']) {
// Get file type
$file_type = mime_content_type($_FILES['file']['tmp_name']);
// Get file size
$file_size = filesize($_FILES['file']['tmp_name']);
// Get file extension
$file_extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
// Validate file type, size, and extension
if(($file_type == 'image/jpeg' || $file_type == 'image/png') && $file_size < 1000000 && $file_extension == 'jpg') {
// Upload file
move_uploaded_file($_FILES['file']['tmp_name'], '/path/to/uploads/'.$_FILES['file']['name']);
echo 'File uploaded successfully.';
}
else {
echo 'Invalid file.';
}
}
?>
This PHP code is a basic implementation of file validation and upload. The code is triggered when a file is uploaded via a form and checks for three important parameters – file type, file size, and file extension – before proceeding with the upload.
The first condition in the code checks if a file has been uploaded via the form. If there is no file, the code will not execute any further. The next line retrieves the file type of the uploaded file by using the mime_content_type() function in PHP. This function reads the first few bytes of the file and returns its MIME type.
The following line retrieves the file size of the uploaded file by using the filesize() function in PHP. This function returns the size of the file in bytes.
The third line retrieves the file extension of the uploaded file by using the pathinfo() function in PHP. This function returns an array containing information about the file path, including the extension.
The next condition validates the file based on certain criteria. In this case, the code checks if the file type is either ‘image/jpeg’ or ‘image/png’, the file size is less than 1000000 bytes (1MB), and the file extension is ‘jpg’. If the file passes these checks, the code proceeds to upload the file to a specified directory using the move_uploaded_file() function in PHP. Otherwise, the code displays an error message.
In summary, this PHP code is a basic implementation of file validation and upload, where it checks the file type, size, and extension before proceeding with the upload. It is important to note that this code is just an example and should be adapted and extended to meet the specific needs of the application being developed.
Conclusion
To retrieving file type, size, and extension before uploading it is an important step when building a file upload feature in a web application. PHP provides various functions to handle file uploads, including getting the file type, size, and extension. Hope this article helps you in implementing a secure and efficient file upload feature on your website.
Recommended PHP Tutorials