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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
php-accelerator网站加速PHP缓冲的方法
Jul 30 PHP
php array_unique之后json_encode需要注意
Jan 02 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
PHP迭代器实现斐波纳契数列的函数
Nov 12 PHP
php生成动态验证码gif图片
Oct 19 PHP
header与缓冲区之间的深层次分析
Jul 30 PHP
PHP数据库处理封装类实例
Dec 24 PHP
laravel5.5添加echarts实现画图功能的方法
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
多重?l件?合查?(一)
2006/10/09 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
详解PHP数组赋值方法
2015/11/07 PHP
php基于curl主动推送最新内容给百度收录的方法
2016/10/14 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
使用JS获取页面上的所有标签
2018/10/18 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
python网络编程之TCP通信实例和socketserver框架使用例子
2014/04/25 Python
web.py中调用文件夹内模板的方法
2014/08/26 Python
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
Python Socket实现简单TCP Server/client功能示例
2017/08/05 Python
django 自定义过滤器的实现
2019/02/26 Python
类和结构的区别
2012/08/15 面试题
自荐信不宜过于夸大
2013/11/06 职场文书
建材业务员岗位职责
2013/12/08 职场文书
销售行政专员职责
2014/01/03 职场文书
家长对小学生的评语
2014/01/28 职场文书
爱情保证书范文
2014/02/01 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
电视新闻稿
2015/07/17 职场文书
家访教师心得体会
2016/01/23 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server