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 相关文章推荐
mysql时区问题
Mar 26 PHP
简单的PHP留言本实例代码
May 09 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
PHP中将数组转成XML格式的实现代码
Aug 08 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
thinkphp备份数据库的方法分享
Jan 04 PHP
PHP6连接SQLServer2005的三部曲
Apr 15 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
php连接sftp的作用以及实例代码
Sep 23 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
Feb 27 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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
2011/05/02 PHP
PHP类的反射用法实例
2014/11/03 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
Yii框架表单模型和验证用法
2016/05/20 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
在Python中使用pngquant压缩png图片的教程
2015/04/09 Python
谈谈python中GUI的选择
2018/03/01 Python
python的xpath获取div标签内html内容,实现innerhtml功能的方法
2019/01/02 Python
Python API 自动化实战详解(纯代码)
2019/06/11 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
Python如何将将模块分割成多个文件
2020/08/04 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Python爬取网站图片并保存的实现示例
2021/02/26 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
匡威德国官网:Converse德国
2019/01/26 全球购物
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
超市促销实习自我鉴定
2013/09/23 职场文书
关于圣诞节的广播稿
2014/01/26 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL