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动态图像的创建
Oct 09 PHP
网络资源
Oct 09 PHP
PHP 动态随机生成验证码类代码
Apr 09 PHP
PHP连接MongoDB示例代码
Sep 06 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
php与java通过socket通信的实现代码
Oct 21 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
Apr 03 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
php mysql_list_dbs()函数用法示例
Mar 29 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
PHP创建单例后台进程的方法示例
May 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
注意:php5.4删除了session_unregister函数
2013/08/05 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
Bootstrap Navbar Component实现响应式导航
2016/10/08 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
Node.js API详解之 timer模块用法实例分析
2020/05/07 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
Python安装第三方库的3种方法
2015/06/21 Python
python Spyder界面无法打开的解决方法
2018/04/27 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
python获取url的返回信息方法
2018/12/17 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
Python计算信息熵实例
2020/06/18 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
英国鹦鹉店:Parrot Essentials
2018/12/03 全球购物
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
企业行政文员岗位职责
2013/12/03 职场文书
个人安全生产承诺书
2014/05/22 职场文书
党性分析自查总结
2014/10/14 职场文书
诉讼和解协议书
2016/03/23 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript