【发布时间】:2011-03-12 14:51:01
【问题描述】:
我有文件的本地访问权限,我需要获取它们的 MIME 类型。在 WAMP/LAMP、CodeIgniter 和 Zend 库中工作。获取 MIME 类型信息的最佳方式是什么?
【问题讨论】:
标签: php zend-framework codeigniter mime-types mime
我有文件的本地访问权限,我需要获取它们的 MIME 类型。在 WAMP/LAMP、CodeIgniter 和 Zend 库中工作。获取 MIME 类型信息的最佳方式是什么?
【问题讨论】:
标签: php zend-framework codeigniter mime-types mime
没有简单的方法。你可以试试:
http://www.php.net/manual/en/function.finfo-file.php
// return mime type ala mimetype extension
$finfo = finfo_open(FILEINFO_MIME_TYPE);
当然,这假设您可以安装 PECL 扩展。
【讨论】:
我认为你需要头脑。最快的方法是做一个头部请求,或者在 apache 下的 PHP 中你可以使用apache_lookup_uri 或者在 PHP 5.3 中你可以使用 FileInfo(我仍然推荐 apache_lookup_uri 或一个简单的头部请求)。
【讨论】:
apache_lookup_uri 没有给你一个 MIME 类型,AFAIK。如@David 所述,如果您有 PECL,FileInfo 将起作用。
apache_lookup_uri() 返回 image/png 作为 Content-Type,这证明这只不过是“假”mime 类型的扩展映射。此外,这可能很危险,因为 Apache 实际请求该文件并可能导致代码执行(对此不确定)。
尝试根据文件扩展名查找 mime 类型绝不是一个好主意,因为这显然可以通过使用的 whos 上传重命名 - 从 .exe 到 .jpg
真正的 mime 类型检测是整体安全措施的一部分。
【讨论】:
解析您的 Apache 的 mime.types 文件。
【讨论】:
试试 CI 的内置函数“get_mime_by_extension($file)”。您可以在“system/helpers/file_helper.php”文件中找到它
【讨论】: