【问题标题】:PHP Does fileinfo function look inside file or just checks the extension of filePHP fileinfo 函数是在文件内部查找还是只检查文件的扩展名
【发布时间】:2021-12-24 19:07:57
【问题描述】:

如果我们上传视频文件,我们有一个 PHP 7.4 代码。 所有 MP4 都被视为 MIME=video/mp4。 但是在极少数情况下,PHP 将 mp4 文件检测为我们不允许的视频/快速时间。

HTTP Post 说它是视频/mp4。

        $finfo = finfo_open(FILEINFO_MIME_TYPE);
        $mime = finfo_file($finfo, $file['file']['tmp_name']);
        finfo_close($finfo); 

如果扩展名相同,为什么 mime 会发生变化? php 在文件中查找视频格式吗?

【问题讨论】:

  • en.wikipedia.org/wiki/QuickTime_File_Format 。可能该文件实际上是一个 .mov。 Quicktime mov 文件和 mp4 文件只是容器,都可以包含相同类型的视频和音频数据。您可能没有理由禁止使用快速视频。

标签: php upload mime-types


【解决方案1】:

您使用的功能是检查文件的内容而不是文件名,以确定适当的 MIME 类型是什么。

来自 finfo_* 系列函数的来源Fileinfo extension documentation

此模块中的函数尝试猜测文件的内容类型和编码通过在文件中的特定位置查找某些魔术字节序列。虽然这不是万无一失的方法,但使用的启发式方法做得很好。

您遇到的极少数情况可能是由于有人保存或重命名了具有错误扩展名的 QuickTime 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多