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)?
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.
MIME files are more commonly seen using a . MIM extension.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With