Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Replacement for File::mime() in Laravel 4 (to get mime type from file extension)

Laravel 3 had a File::mime() method which made it easy to get a file's mime type from its extension:

$extension = File::extension($path);
$mime = File::mime($extension);

On upgrading to Laravel 4 I get an error:

Call to undefined method Illuminate\Filesystem\Filesystem::mime()

I also can't see any mention of mime types in the Filesystem API docs.

What's the recommended way to get a file's mime type in Laravel 4 (please note this is not a user-uploaded file)?

like image 691
mtmacdonald Avatar asked Oct 30 '13 12:10

mtmacdonald


People also ask

Is MIME type same as extension?

A multipurpose internet mail extension, or MIME type, is an internet standard that describes the contents of internet files based on their natures and formats.

What is the extension of MIME file?

MIME files are more commonly seen using a . MIM extension.

How would you determine the MIME type of a file?

The application uses file content sniffers to search for a particular pattern in the file. A file content sniffer associates a specific pattern in a file with a MIME type. If the application finds a match for the pattern, the MIME type associated with the pattern is the MIME type of the file.


1 Answers

One solution I've found is to use the Symfony HttpFoundation File class (which is already included as a dependency in Laravel 4):

$file = new Symfony\Component\HttpFoundation\File\File($path);
$mime = $file->getMimeType();

And in fact the File class uses the Symfony MimeTypeGuesser class so this also works:

$guesser = Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser::getInstance();
echo $guesser->guess($path);

But unfortunately I'm getting unexpected results: I'm getting text/plain instead of text/css when passing a path to a css file.

like image 99
mtmacdonald Avatar answered Oct 06 '22 00:10

mtmacdonald