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

时间:2014-01-28 15:46:19

标签: memory types mime-types mime fileinfo

我会使用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);
?>

感谢。

1 个答案:

答案 0 :(得分:6)

我认为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
    )
);

它正在回归:

string(16) "video/x-matroska"

所以它有效!