Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
413 views
in Technique[技术] by (71.8m points)

php - 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 IlluminateFilesystemFilesystem::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)?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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 SymfonyComponentHttpFoundationFileFile($path);
$mime = $file->getMimeType();

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

$guesser = SymfonyComponentHttpFoundationFileMimeTypeMimeTypeGuesser::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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...