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 相关文章推荐
一个图形显示IP的PHP程序代码
Oct 19 PHP
PHP 时间日期操作实战
Aug 26 PHP
thinkPHP的Html模板标签使用方法
Nov 13 PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
laravel 操作数据库常用函数的返回值方法
Oct 11 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 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支持页面回退的两种方法
2008/01/10 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
php编写的一个E-mail验证类
2015/03/25 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
jquery 经典动画菜单效果代码
2010/01/26 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
vue.js 使用v-if v-else发现没有执行解决办法
2017/05/15 Javascript
JavaScript表单验证实现代码
2017/05/22 Javascript
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
node.js基础知识小结
2018/02/26 Javascript
浅谈webpack组织模块的原理
2018/03/10 Javascript
Vue引入jquery实现平滑滚动到指定位置
2018/05/09 jQuery
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
2019/04/04 Javascript
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
[01:45:05]VGJ.T vs Newbee Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python中列表的切片与修改知识点总结
2019/07/23 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
《狐假虎威》教学反思
2014/02/07 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
文明社区申报材料
2014/08/21 职场文书
中秋节寄语2015
2015/03/24 职场文书
考研导师推荐信范文
2015/03/27 职场文书
给下属加薪申请报告
2015/05/15 职场文书