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

Memory 使用fileinfo获取mime类型,是处理大文件的好方法吗?,memory,types,mime-types,mime,fileinfo,Memory,Types,Mime Types,Mime,Fileinfo,我会使用fileinfo来获取文件的mime类型,因为mime\u content\u类型已被弃用。 但是我有一个问题,这是处理大文件的好方法吗 如果我有一个1.5gb的文件,我不想在内存中“打开”这个文件,只获取mime类型 <?php $finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension foreach (glob("*") as $filename) { echo

我会使用fileinfo来获取文件的mime类型,因为mime\u content\u类型已被弃用。 但是我有一个问题,这是处理大文件的好方法吗

如果我有一个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);
?>


谢谢。

我想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
    )
);

所以成功了

很好的例子!谢谢对于PHP7,我观察到这种方法有一个奇怪的错误。整个文件的返回值:
image/jpeg;charset=binary
但是当使用您的方法并且仅获取前1024个字节时,它返回
应用程序/八位字节流;字符集=二进制
。使用前2048或4096字节时出现相同错误您使用哪个PHP7版本?我已经用PHP版本7.0.15-0ubuntu0.16.04.4(UbuntuTrusty)进行了测试,它按预期工作:
string(16)“video/x-matroska”
。您正在测试哪个文件?
string(16) "video/x-matroska"