我正在尝试确定文件的 mime 类型。我尝试了几种方法,但没有想出任何可以提供一致输出的方法。我试过了$mime = mime_content_type($file)
and $mime = exec('file -bi ' . $file)
。我正在提供图像、CSS 和 JavaScript。
Example mime_content_type()
output:
- jquery.min.js - 文本/纯文本
- editor.js - 文本/纯文本
- admin.css - 文本/纯文本
- controls.css - 应用程序/x-troff
- logo.png - 文本/纯文本
Example exec(...)
output:
- jquery.min.js - 文本/纯文本;字符集=us-ascii
- editor.js - 文本/x-c++;字符集=us-ascii
- admin.css - 文本/x-c;字符集=us-ascii
- controls.css - 文本/x-c;字符集=us-ascii
- 徽标.png - 图像/png
从这里可以看出,结果到处都是。
我的PHP版本是5.2.6
SOLUTION(感谢雅各布)
$mimetypes = array(
'gif' => 'image/gif',
'png' => 'image/png',
'jpg' => 'image/jpg',
'css' => 'text/css',
'js' => 'text/javascript',
);
$path_parts = pathinfo($file);
if (array_key_exists($path_parts['extension'], $mimetypes)) {
$mime = $mimetypes[$path_parts['extension']];
} else {
$mime = 'application/octet-stream';
}
The Fileinfo http://www.php.net/manual/en/book.fileinfo.php如果您的版本 >= 5.30,则扩展将完成这项工作
- 您应该尽量避免执行命令
-
mime_content_type
在 PHP 5.30 中已弃用
如果不幸的是你的版本
这是一个例子:
<?php
$filename = 'FILENAME HERE';
$mimetypes = array('png' => 'image/png', 'jpg' => 'image/jpg', 'css' => 'text/css',
'js' => 'application/x-javascript'
// any other extensions that you may be serving
);
$ext = strtolower(substr($filename, strrpos($filename, '.') + 1, strlen($filename)));
if(array_key_exists($ext, $mimetypes)) {
$mime = $mimetypes[$ext];
} else {
echo 'mime type not found';
}
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)