php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】


Posted in PHP onApril 18, 2017

本文实例讲述了php实现不通过扩展名准确判断文件类型的方法。分享给大家供大家参考,具体如下:

第一种方法

通过php的finfo_file()

$handle=finfo_open(FILEINFO_MIME_TYPE);//This function opens a magic database and returns its resource. 
$fileInfo=finfo_file($handle,'./test.txt');// Return information about a file
finfo_close($handle);
print_r($fileInfo);
echo '==========="\n"';

另外

finfo_buffer: Return information about a string buffer
finfo_close: Close fileinfo resource
mime_content_type:Detect MIME Content-type for a file (deprecated)

第二种方法

通过二进制流获取文件内容

$fp=fopen('test.txt','r')///实际是image/png
$bin = fread($fp, 2); //只读2字节
fclose($fp);
$str_info = @unpack(“C2chars”, $bin);//Unpack data from binary string
$type_code = intval($str_info['chars1'].$str_info['chars2']);// Get the integer value of a variable
$file_type = ”;
switch ($type_code) {
case 7790:
$file_type = 'exe';
break;
case 7784:
$file_type = 'midi';
break;
case 8075:
$file_type = 'zip';
break;
case 8297:
$file_type = 'rar';
break;
case 255216:
$file_type = 'jpg';
break;
case 7173:
$file_type = 'gif';
break;
case 6677:
$file_type = 'bmp';
break;
case 13780:
$file_type = 'png';
break;
default:
$file_type = 'unknown';
break;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP调用数据库的存贮过程
Oct 09 PHP
繁体中文转换为简体中文的PHP函数
Oct 09 PHP
php绝对路径与相对路径之间关系的的分析
Mar 03 PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 PHP
discuz的php防止sql注入函数
Jan 17 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 PHP
PHP捕获Fatal error错误的方法
Jun 11 PHP
php文件夹的创建与删除方法
Jan 24 PHP
php好代码风格的阶段性总结
Jun 25 PHP
php版微信发红包接口用法示例
Sep 23 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 #PHP
PHP递归删除多维数组中的某个值
Apr 17 #PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 #PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 #PHP
PHP中快速生成随机密码的几种方式
Apr 17 #PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 #PHP
关于php 高并发解决的一点思路
Apr 16 #PHP
You might like
PHP4实际应用经验篇(4)
2006/10/09 PHP
PHP APC的安装与使用详解
2013/06/13 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
php处理复杂xml数据示例
2016/07/11 PHP
Yii2框架实现注册和登录教程
2016/09/30 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
jquery 实现checkbox全选,反选,全不选等功能代码(奇数)
2012/10/24 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
JavaScript中指定函数名称的相关方法
2015/06/04 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
2016/04/18 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
footer定位页面底部(代码分享)
2017/03/07 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
2019/05/09 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
python 参数列表中的self 显式不等于冗余
2008/12/01 Python
python传递参数方式小结
2015/04/17 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
2019/06/17 Python
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
青年文明号服务承诺
2014/03/31 职场文书
办公室文员工作自我鉴定
2014/09/19 职场文书
人事代理委托书
2014/09/27 职场文书
美容院合作经营协议书
2014/10/10 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
歌舞青春观后感
2015/06/10 职场文书
社区干部培训心得体会
2016/01/06 职场文书