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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
繁体中文转换为简体中文的PHP函数
Oct 09 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
PHP学习之整理字符串
Apr 17 PHP
深入解析php中的foreach问题
Jun 30 PHP
深入解析php中的foreach函数
Aug 31 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
destoon调用企业会员公司形象图片的实现方法
Aug 21 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php常用hash加密函数
2014/11/22 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP内核探索之变量
2015/12/22 PHP
深入浅析php json 格式控制
2015/12/24 PHP
thinkPHP简单导入和使用阿里云OSSsdk的方法
2017/03/15 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
使用正则替换变量
2007/05/05 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
Vue.js中的高级面试题及答案
2020/01/13 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
[56:20]LGD vs VP Supermajor 败者组决赛 BO3 第三场 6.10
2018/07/04 DOTA
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
python实现文本文件合并
2015/12/29 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python交互式图形编程实例(三)
2017/11/17 Python
python3将视频流保存为本地视频文件
2018/06/20 Python
解决新版Pycharm中Matplotlib图像不在弹出独立的显示窗口问题
2019/01/15 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
Django后台管理系统的图文使用教学
2020/01/20 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
反腐倡廉标语
2014/06/24 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书