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
Nov 25 PHP
PHP 模板高级篇总结
Dec 21 PHP
用PHP写的MySQL数据库用户认证系统代码
Mar 22 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP中echo和print的区别
Aug 28 PHP
php给一组指定关键词添加span标签的方法
Mar 31 PHP
如何使用php实现评委评分器
Jul 31 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
解析 thinkphp 框架中的部分方法
May 07 PHP
PHP xpath()函数讲解
Feb 11 PHP
PHP convert_uudecode()函数讲解
Feb 14 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 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
用户的详细注册和判断
2006/10/09 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
Yii分页用法实例详解
2014/12/04 PHP
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
js制作支付倒计时页面
2016/10/21 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
python访问sqlserver示例
2014/02/10 Python
python实现矩阵打印
2019/03/02 Python
python实现人像动漫化的示例代码
2020/05/17 Python
python Xpath语法的使用
2020/11/26 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
意大利网上药房:Farmacia 33
2020/01/27 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
篮球兴趣小组活动总结
2014/07/07 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
西游记读书笔记
2015/06/25 职场文书
防震减灾主题班会
2015/08/14 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
高中化学教学反思
2016/02/22 职场文书
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫