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与XML联手进行网站编程代码实例
Jul 10 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
PHP的加密方式及原理
Jun 14 PHP
PHP数组传递是值传递而非引用传递概念纠正
Jan 31 PHP
PHP中session变量的销毁
Feb 27 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
Nov 18 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
详解php中的implements 使用
Jun 13 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 PHP
tp5修改(实现即点即改)
Oct 18 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设计模式中单例模式的应用分析
2013/05/15 PHP
解析yahoo邮件用phpmailer发送的实例
2013/06/24 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
浅析php原型模式
2014/11/25 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
javascript实现div浮动在网页最顶上并带关闭按钮效果实例
2013/08/13 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
WEB前端设计师常用工具集锦
2014/12/09 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
js判断文件格式及大小的简单实例(必看)
2016/10/11 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
深入讲解Python编程中的字符串
2015/10/14 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
利用python实现周期财务统计可视化
2019/08/25 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
一些.net面试题
2014/10/06 面试题
国税会议欢迎词
2014/01/16 职场文书
统计系教授推荐信
2014/02/28 职场文书
网络编辑职责
2014/03/01 职场文书
信用卡工资证明范本
2014/10/17 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
科普 | 业余无线电知识-波段篇
2022/02/18 无线电
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript