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 相关文章推荐
让你同时上传 1000 个文件 (二)
Oct 09 PHP
在普通HTTP上安全地传输密码
Jul 21 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
php基于表单密码验证与HTTP验证用法实例
Jan 06 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
php显示时间常用方法小结
Jun 05 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
May 13 PHP
php文件系统处理方法小结
May 23 PHP
PHP实现对数组分页处理实例详解
Feb 07 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP实现的激活用户注册验证邮箱功能示例
Jun 06 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 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实现把数字ID转字母ID
2013/08/12 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
JS对象转换为Jquery对象实现代码
2013/12/29 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
javascript深拷贝(deepClone)详解
2016/08/24 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
js中获取键盘按下键值event.keyCode、event.charCode和event.which的兼容性详解
2017/03/15 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
VUE 自定义组件模板的方法详解
2019/08/30 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
微信小程序返回上一级页面的实现代码
2020/06/19 Javascript
Python里隐藏的“禅”
2014/06/16 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
python pandas库的安装和创建
2019/01/10 Python
Python制作exe文件简单流程
2019/01/24 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
实习生自荐信范文分享
2013/11/27 职场文书
数控专业个人求职信范例
2013/11/29 职场文书
工作睡觉检讨书
2014/02/25 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
防火标语大全
2014/10/06 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
员工安全责任协议书
2016/03/22 职场文书
MySQL中的全表扫描和索引树扫描
2022/05/15 MySQL
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript
Spring Boot实现文件上传下载
2022/08/14 Java/Android