获取没有PECL扩展名的PHP5中本地文件的MIME类型?
时间:2020-03-05 18:49:47 来源:igfitidea点击:
不推荐使用mime_content_type()。
如何在不使用此弃用方法或者PECL fileinfo扩展名的情况下使用PHP5查找本地文件的MIME类型?
编辑:那就是我所担心的。不幸的是,他们不赞成使用内置函数,而倾向于需要一个并不总是可用的扩展的函数。
解决方案
回答
如果我们不能使用fileinfo扩展名,并且不想使用mime_content_type,那么选择将受到限制。
最有可能需要根据文件扩展名进行查找。 mime_content_type做了一些更智能的操作,实际上在文件中寻找特殊数据来确定mime类型。
回答
getID3()库是最快捷,最便捷的时机选择。该库最初是为获取MP3 ID3数据的项目而命名的,它的功能不只是两个方面,而且对于各种常见或者奇数文件元数据任务而言都非常方便。
我用它来获取在线图像和视频工具的文件的MIME类型。在我完成的所有测试中,我没有看到getID3弄错了MIME类型。
我还用它来检查QuickTime视频是否有流媒体提示。我将其作为多功能性的一个例子。
第二个比较耗时的选择是如已经建议的那样滚动我们自己的MIME类型检查器。如果我们有MIME魔术文件,则可以通过将文件数据的前n个字节与从MIME魔术文件派生的MIME类型查找表进行比较,将文件数据的前n个字节与前n个字节相比,可以对文件扩展名进行更进一步的查找。
一个典型的MIME魔术文件将包含超过500套MIME类型,这可能导致比较缓慢(需要进行大量检查)。在家用解决方案中对10种最常见的MIME类型检查进行硬编码将对我们有所帮助。