在没有 PECL 扩展的 PHP5 中获取本地文件的 MIME 类型?

Posted

技术标签:

【中文标题】在没有 PECL 扩展的 PHP5 中获取本地文件的 MIME 类型?【英文标题】:Get MIME type of a local file in PHP5 without a PECL extension? 【发布时间】:2010-09-08 05:51:09 【问题描述】:

mime_content_type() 已弃用。

如何使用 php5 但不使用这种已弃用的方法或 PECL fileinfo 扩展名找到本地文件的 MIME type

编辑:这就是我害怕的。不幸的是,他们弃用了内置函数,转而使用需要扩展但并不总是可用的函数。

【问题讨论】:

【参考方案1】:

如果您不能使用 fileinfo 扩展名,并且您不想使用 mime_content_type,那么您的选择是有限的。

您很可能需要根据文件扩展名进行查找。 mime_content_type 做了一些更智能的事情,实际上是在文件中查找特殊数据来确定 mime 类型。

【讨论】:

【参考方案2】:

getID3() 库是一个快速且简单的工作时间最多的选项。最初以获取 MP3 ID3 数据的项目命名,该库的功能远不止于此,而且对于各种常见或奇怪的文件元数据任务非常方便。

我用它来获取在线图像和视频工具的 MIME 类型的文件。在我完成的所有测试中,我没有看到 getID3 错误地获取 MIME 类型。

我还用它来检查 QuickTime 视频是否有流媒体提示。我提到这是多功能性的一个例子。

第二个更耗时的选项是滚动您自己的 MIME 类型检查器,如已建议的那样。如果您有一个 MIME 魔术文件,则可以通过将文件数据的前 n 个字节与从您的 MIME 魔术文件派生的 MIME 类型查找表进行比较来比查找文件扩展名更进一步。

一个典型的 MIME 魔术文件将包含超过 500 组 MIME 类型,这可能会导致比较缓慢(需要进行大量检查)。在您的家庭滚动解决方案中硬编码 10 种最常见的 MIME 类型检查将对此有所帮助。

【讨论】:

以上是关于在没有 PECL 扩展的 PHP5 中获取本地文件的 MIME 类型?的主要内容,如果未能解决你的问题,请参考以下文章

php5.6安装PDO_MYSQL扩展

php5.6配置oracle数据库扩展 oci8(windows7系统64位)

php5.5.32编译安装imagick-2.3.0php扩展插件遇到的坑

apache php RabbitMQ配置方式

通过pecl安装php扩展,未找到pecl命令的解决办法

PHP中的pdo