Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
397 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 Reply

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...