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 相关文章推荐
7个超级实用的PHP代码片段
Jul 11 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
php用户注册信息验证正则表达式
Nov 12 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
zend framework重定向方法小结
May 28 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
PHP实现唤起微信支付功能
Feb 18 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
2014/01/26 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
些很实用且必用的小脚本代码
2006/06/26 Javascript
用jquery来定位
2007/02/20 Javascript
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
表单验证的完整应用案例探讨
2013/03/29 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
AngularJS实现Input格式化的方法
2016/11/07 Javascript
纯js实现的积木(div层)拖动功能示例
2017/07/19 Javascript
AngularJS中filter的使用实例详解
2017/08/25 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
vue实现动态按钮功能
2019/05/13 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
2019/05/15 Javascript
vue+element导航栏高亮显示的解决方式
2019/11/12 Javascript
Python实现的凯撒密码算法示例
2018/04/12 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
Django将默认的SQLite更换为MySQL的实现
2019/11/18 Python
python生成并处理uuid的实现方式
2020/03/03 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Python Django路径配置实现过程解析
2020/11/05 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
财务部出纳岗位职责
2013/12/22 职场文书
光盘行动倡议书
2014/02/02 职场文书
优秀食品类广告词
2014/03/19 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang