【问题标题】:Get MIME Type via PHP通过 PHP 获取 MIME 类型
【发布时间】:2011-03-12 14:51:01
【问题描述】:

我有文件的本地访问权限,我需要获取它们的 MIME 类型。在 WAMP/LAMP、CodeIgniter 和 Zend 库中工作。获取 MIME 类型信息的最佳方式是什么?

【问题讨论】:

    标签: php zend-framework codeigniter mime-types mime


    【解决方案1】:

    没有简单的方法。你可以试试:
    http://www.php.net/manual/en/function.finfo-file.php

    // return mime type ala mimetype extension
    $finfo = finfo_open(FILEINFO_MIME_TYPE);
    

    当然,这假设您可以安装 PECL 扩展。

    【讨论】:

      【解决方案2】:

      我认为你需要头脑。最快的方法是做一个头部请求,或者在 apache 下的 PHP 中你可以使用apache_lookup_uri 或者在 PHP 5.3 中你可以使用 FileInfo(我仍然推荐 apache_lookup_uri 或一个简单的头部请求)。

      【讨论】:

      • apache_lookup_uri 没有给你一个 MIME 类型,AFAIK。如@David 所述,如果您有 PECL,FileInfo 将起作用。
      • apache_lookup_uri 除其他外返回 mime 类型的 'content_type'
      • 我将我的一个 .PHP 文件重命名为 .PNG 并且 apache_lookup_uri() 返回 image/png 作为 Content-Type,这证明这只不过是“假”mime 类型的扩展映射。此外,这可能很危险,因为 Apache 实际请求该文件并可能导致代码执行(对此不确定)。
      • @Alix-Axel 似乎很明显,因为 apache 没有任何嗅探功能,它依赖于将文件扩展名映射到媒体类型。
      【解决方案3】:

      尝试根据文件扩展名查找 mime 类型绝不是一个好主意,因为这显然可以通过使用的 whos 上传重命名 - 从 .exe 到 .jpg

      真正的 mime 类型检测是整体安全措施的一部分。

      【讨论】:

        【解决方案4】:

        解析您的 Apache 的 mime.types 文件。

        【讨论】:

          【解决方案5】:

          试试 CI 的内置函数“get_mime_by_extension($file)”。您可以在“system/helpers/file_helper.php”文件中找到它

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-11
            • 2013-10-04
            • 1970-01-01
            • 2014-11-13
            • 2016-05-19
            • 2014-04-16
            • 2016-06-07
            相关资源
            最近更新 更多