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 相关文章推荐
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
php获取用户IPv4或IPv6地址的代码
Nov 15 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
PHP处理大量表单字段的便捷方法
Feb 07 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
PHP中文竖排转换实现方法
Oct 23 PHP
深入理解PHP JSON数组与对象
Jul 19 PHP
安装docker和docker-compose实例详解
Jul 30 PHP
PHP与SQL语句写一句话木马总结
Oct 11 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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
php中全局变量global的使用演示代码
2011/05/18 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
php单链表实现代码分享
2016/07/04 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
JS+CSS实现可拖动的弹出提示框
2015/02/16 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
微信小程序实现带参数的分享功能(两种方法)
2019/05/17 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
JavaScript中使用Spread运算符的八种方法总结
2020/06/18 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS VG
2014/05/25 DOTA
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
Python进行数据提取的方法总结
2016/08/22 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
JupyterNotebook设置Python环境的方法步骤
2019/12/03 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
Pycharm 解决自动格式化冲突的设置操作
2021/01/15 Python
html5调用摄像头功能的实现代码
2018/05/07 HTML / CSS
宠物店的创业计划书范文
2014/01/11 职场文书
施工安全标语
2014/06/07 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
公司委托书范本5篇
2014/09/20 职场文书
三人合伙协议书范本
2014/10/29 职场文书
交通事故协议书范本
2014/11/18 职场文书
诚信高考倡议书
2019/06/24 职场文书
Nest.js参数校验和自定义返回数据格式详解
2021/03/29 Javascript
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
Mysql如何查看是否使用到索引
2022/12/24 MySQL