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 相关文章推荐
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
使用PHP编写发红包程序
Jul 22 PHP
php实现复制移动文件的方法
Jul 29 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
PHP7中I/O模型内核剖析详解
Apr 14 PHP
PHP常见过waf webshell以及最简单的检测方法
May 21 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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
基于mysql的论坛(6)
2006/10/09 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
DOM事件探秘篇
2017/02/15 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
django url到views参数传递的实例
2019/07/19 Python
Python使用Pandas对csv文件进行数据处理的方法
2019/08/01 Python
Python高级编程之继承问题详解(super与mro)
2019/11/19 Python
关于Python-faker的函数效果一览
2019/11/28 Python
python 实现PIL模块在图片画线写字
2020/05/16 Python
pandas针对excel处理的实现
2021/01/15 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
社区活动总结报告
2014/05/05 职场文书
单位绩效考核方案
2014/05/11 职场文书
合作协议书模板2014
2014/09/26 职场文书
中层干部考核评语
2015/01/04 职场文书
美丽的大脚观后感
2015/06/03 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
react antd实现动态增减表单
2021/06/03 Javascript
nginx服务器的下载安装与使用详解
2021/08/02 Servers
解决MySQL报“too many connections“错误
2022/04/19 MySQL
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers