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 相关文章推荐
Windows中安装Apache2和PHP4权威指南
Nov 18 PHP
PHP 采集心得技巧
May 15 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
php文件系统处理方法小结
May 23 PHP
php 实现301重定向跳转实例代码
Jul 18 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
php之可变变量的实例详解
Sep 12 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
PHP7 list() 函数修改
Mar 09 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 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
phpmyadmin MySQL 加密配置方法
2009/07/05 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
2014/10/21 PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
2014/11/19 PHP
PHP中把对象数组转换成普通数组的方法
2015/07/10 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
用ADODB.Stream转换
2007/01/22 Javascript
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
文本框根据输入内容自适应高度的代码
2011/10/24 Javascript
Highcharts 非常实用的Javascript统计图demo示例
2013/07/03 Javascript
javascript的回调函数应用示例
2014/02/20 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
2016/04/13 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
Series和DataFrame使用简单入门
2019/11/13 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
Python colormap库的安装和使用详情
2020/10/06 Python
使用Html5实现异步上传文件,支持跨域,带有上传进度条
2016/09/17 HTML / CSS
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
银行实习人员自我鉴定
2013/09/22 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
学校远程教育工作总结
2015/08/11 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
导游词之张家界
2019/10/31 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL