用fileinfo获取mime类型,是大文件的好方法吗?

coo*_*mer 3 memory mime types fileinfo mime-types

我会使用fileinfo来获取我的文件的mime类型,因为不推荐使用mime_content_type.但我有一个问题,这是大文件的好方法吗?

如果我有一个1.5gb的文件,我不想在内存中"打开"这个文件只获得mime类型...

<?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);
?>
Run Code Online (Sandbox Code Playgroud)

谢谢.

小智 7

我想finfo从文件头获取MIME信息,所以如果你只提供非常少的文件的第一个字节,它将起作用.我用3GB MKV文件测试了这个:

<?php
$finfo = new finfo(FILEINFO_MIME);
var_dump(
    $finfo->buffer(
        file_get_contents('My movie.mkv', false, null, -1, 1024),
        FILEINFO_MIME_TYPE
    )
);
Run Code Online (Sandbox Code Playgroud)

它正在回归:

string(16) "video/x-matroska"
Run Code Online (Sandbox Code Playgroud)

所以它奏效了!