finfo函数返回疯狂的mime类型。看下面的代码,这是怎么回事?

<?php
    $files = array ("css.css", "index.html", "js.js", "png.png");

    $info = finfo_open (FILEINFO_MIME_TYPE);

    for ($i = 0; $i < count ($files); $i ++) {
        $type = finfo_file ($info, $files[$i]);

        $files[$i] = $type;
    }

    finfo_close ($info);

    echo $files[0]; // text/x-c -> WHAT ?!
    echo $files[1]; // text/html -> Ok !
    echo $files[2]; // text/x-c++ -> WHAT ?!
    echo $files[3]; // image/png -> Ok !
?>

谢谢

最佳答案

我不太熟悉fileinfo的工作原理,但是我认为这很正常。文本文件(这就是CSS和JS所提供的)没有提供关于其内容的明确指针。它们没有头字节,没有定义的结构。因此,糟糕的fileinfo所能做的就是猜测-结果很糟糕,如您所见。

我认为要成功验证.js和.css文件的内容,您必须依靠扩展名,或者实际上是使用正确的,适当的解析器对其进行解析。

关于php没有返回正确的mime类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5226289/

10-14 06:00