Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find Mime type of file or url using php for all file format

Hi I am looking for best way to find out mime type in php for any local file or url. I have tried mime_content_type function of php but since it is deprecated I am looking for better solution in php for all file format.

mime_content_type — Detect MIME Content-type for a file ***(deprecated)***

I have already tried below function

echo 'welcome';
if (function_exists('finfo_open')) {
    echo 'testing';
    $finfo = finfo_open(FILEINFO_MIME);
    $mimetype = finfo_file($finfo, "http://4images.in/wp-content/uploads/2013/12/Siberian-Tiger-Running-Through-Snow-Tom-Brakefield-Getty-Images-200353826-001.jpg");
    finfo_close($finfo);
    echo $mimetype;
}

Above code is not working for me, I am only seeing welcome for output.I am not sure if I am doing something wrong here.


Below code works somehow in my local but it does not work for urls.

$file = './apache_pb2.png';
$file_info = new finfo(FILEINFO_MIME);  // object oriented approach!
$mime_type = $file_info->buffer(file_get_contents($file));  // e.g. gives "image/jpeg"
$mime  = explode(';', $mime_type);
print $mime[0];

Is there some work around which work for both(url and local).what is the best practice to set mime type for all contents (image, video, file etc.) other than mime_content_type function in php.also is it recommended to use the mime_content_type function in php, Is it best practice in php ?

like image 951
Hitesh Avatar asked Feb 20 '14 11:02

Hitesh


People also ask

What is the PHP function to check the MIME type of a file?

The mime_content_type() function is an inbuilt function in PHP which is used to get the MIME content-type of a file. Parameters: This function accepts single parameter $file which specifies the path of the file which MIME details to be find.

Do all files have a MIME type?

There are too many issues with MIME types on different operating systems, different applications saving files differently, some files not having a MIME at all, and lastly, the fact that the extension and MIME could be altered by a malicious user or program.


1 Answers

Make use of file_info in PHP with FILEINFO_MIME_TYPE flag as the parameter.

[Example taken as it is from PHP Manual]

<?php
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
    echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>

OUTPUT :

text/html
image/gif
application/vnd.ms-excel

EDIT :

You need to enable the extension on your PHP.ini

;extension=php_fileinfo.dll

Remove the semicolon from that line and restart your webserver and you are good to go.
Installation Doc.

like image 137
Shankar Narayana Damodaran Avatar answered Nov 09 '22 01:11

Shankar Narayana Damodaran