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输出Excel文件类
Feb 08 PHP
PHP三元运算符的结合性介绍
Jan 10 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
php自定义session示例分享
Apr 22 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
PHP超全局数组(Superglobals)介绍
Jul 01 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP7匿名类用法分析
Sep 26 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP中检查isset()和!empty()函数的必要性
Feb 13 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
Javascript非构造函数的继承
2015/04/27 Javascript
windows下安装nodejs及框架express
2015/08/07 NodeJs
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
实例解析angularjs的filter过滤器
2016/12/14 Javascript
简单谈谈require模块化jquery和angular的问题
2017/06/23 jQuery
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
JavaScript将数组转换为链表的方法
2020/02/16 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
对python中return和print的一些理解
2017/08/18 Python
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
会议开场欢迎词
2014/01/15 职场文书
环保宣传标语
2014/06/12 职场文书
医院搬迁方案
2014/06/14 职场文书
党员剖析材料范文
2014/09/30 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
艺术节开幕词
2015/01/28 职场文书
停水通知
2015/04/16 职场文书
建党伟业的观后感
2015/06/01 职场文书
小数乘法教学反思
2016/02/22 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书