PHP 文件类型判断代码


Posted in PHP onMarch 13, 2009

何为MIME类型,它是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序来打开。
多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

参考链接:php文件格式(mime类型)对照表 。

1、mime_content_type()函数判断获取mime类型
mime_content_type返回指定文件的MIME类型,用法:

echo mime_content_type ( 'php.gif' ) . "\n" ;
echo mime_content_type ( 'test.php' );

输出:
image/gif
text/plain

但是php 5.3.0已经将该函数废弃。如果仍想使用此函数,那么可以对php进行配置启用magic_mime扩展。

2、php Fileinfo 获取文件MIME类型(finfo_open)

PHP官方推荐mime_content_type()的替代函数是Fileinfo函数。PHP 5.3.0+已经默认支持Fileinfo函数(fileinfo support-enabled),不必进行任何配置即可使用finfo_open()判断获取文件MIME类型。用法:

$finfo = finfo_open(FILEINFO_MIME);
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);

3、image_type_to_mime_type()获取图片MIME类型

如果需要判断MIME类型的文件只有图像文件,那么首先可以使用exif_imagetype()函数获取图像类型常量,再用image_type_to_mime_type()函数将图像类型常量转换成图片文件的MIME类型。
注意:需要在php.ini中配置打开php_mbstring.dll(Windows需要)和extension=php_exif.dll。

4、php上传文件获取MIME类型
如果使用php上传文件,检测上传文件的MIME类型,则可以使用全局变量$_FILES['uploadfile']['type'],由客户端的浏览器检测获取文件MIME类型。

5、通过文件扩展名判断文件类型

<?php 
$filename = "D:\\296.mid"; 
$file = fopen($filename, "rb"); 
$bin = fread($file, 2); //只读2字节 
fclose($file); 
$strInfo = @unpack("c2chars", $bin); 
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']); 
$fileType = ''; 
switch ($typeCode) 
{ 
case 7790: 
$fileType = 'exe'; 
break; 
case 7784: 
$fileType = 'midi'; 
break; 
case 8297: 
$fileType = 'rar'; 
break; 
case 255216: 
$fileType = 'jpg'; 
break; 
case 7173: 
$fileType = 'gif'; 
break; 
case 6677: 
$fileType = 'bmp'; 
break; 
case 13780: 
$fileType = 'png'; 
break; 
default: 
echo 'unknown'; 
} 
echo 'this is a(an) '.$fileType.' file:'.$typeCode; 
?>

以上就是PHP 文件类型判断的几种方法,如果你有更好的方法,可以留言

PHP 相关文章推荐
php中的时间处理
Oct 09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
php学习之运算符相关概念
Jun 09 PHP
一组PHP可逆加密解密算法实例代码
Jan 21 PHP
PHP函数eval()介绍和使用示例
Aug 20 PHP
php使用PDO操作MySQL数据库实例
Dec 30 PHP
PHP MPDF中文乱码的解决方式
Dec 08 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 PHP
PHP获取星期几的常用方法小结
Dec 18 PHP
实例讲解php实现多线程
Jan 27 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 PHP
php discuz 主题表和回帖表的设计
Mar 13 #PHP
php 获取mysql数据库信息代码
Mar 12 #PHP
php 删除记录实现代码
Mar 12 #PHP
php 异常处理实现代码
Mar 10 #PHP
php 表单数据的获取代码
Mar 10 #PHP
php URL编码解码函数代码
Mar 10 #PHP
php 进度条实现代码
Mar 10 #PHP
You might like
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
解析PHP汉字转换拼音的类
2013/06/18 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
php实现的mongodb操作类
2015/05/28 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
JavaScript实现节点的删除与序号重建实例
2015/08/05 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
2015/11/16 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
使用javascript插入样式
2016/03/14 Javascript
python实现socket端口重定向示例
2014/02/10 Python
python实现用户登陆邮件通知的方法
2015/07/09 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
教你学会使用Python正则表达式
2017/09/07 Python
python梯度下降法的简单示例
2018/08/31 Python
用Django写天气预报查询网站
2018/10/21 Python
Python短信轰炸的代码
2020/03/25 Python
python模拟实现分发扑克牌
2020/04/22 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
python else语句在循环中的运用详解
2020/07/06 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
法国家具及室内配件店:home24
2017/01/21 全球购物
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
活动倡议书范文
2014/05/13 职场文书
体育口号大全
2014/06/18 职场文书
北京天坛导游词
2015/02/12 职场文书
聘任书范文大全
2015/09/21 职场文书
创业计划书之网吧
2019/10/10 职场文书
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python
Python中的 No Module named ***问题及解决
2022/07/23 Python
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL