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 相关文章推荐
如何过滤高亮显示非法字符
Oct 09 PHP
php 多关键字 高亮显示实现代码
Apr 23 PHP
PHP中如何定义和使用常量
Feb 28 PHP
怎么在Windows系统中搭建php环境
Aug 31 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
thinkphp中memcache的用法实例
Nov 29 PHP
php实现四舍五入的方法小结
Mar 03 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
php 生成加密公钥加密私钥实例详解
Jun 16 PHP
PHP implode()函数用法讲解
Mar 08 PHP
Laravel使用原生sql语句并调用的方法
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
针对初学PHP者的疑难问答(2)
2006/10/09 PHP
PHP按行读取文件时删除换行符的3种方法
2014/05/04 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
2018/05/11 PHP
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
python 统计数组中元素出现次数并进行排序的实例
2018/07/02 Python
python之mock模块基本使用方法详解
2019/06/27 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
日本最大的旅游网站:Rakuten Travel(乐天旅游)
2018/08/02 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
公司营业员的自我评价
2014/03/04 职场文书
合作意向协议书范本
2014/03/31 职场文书
公司募捐倡议书
2014/05/14 职场文书
2014年学校工作总结
2014/11/20 职场文书
校本研修个人总结
2015/02/28 职场文书
2015教师年度考核评语
2015/03/25 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
家长会主持词开场白
2015/05/29 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python