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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
用文本文件实现的动态实时发布新闻的程序
Oct 09 PHP
删除数组元素实用的PHP数组函数
Aug 18 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
PHP Session机制简介及用法
Aug 19 PHP
WordPress开发中用于标题显示的相关函数使用解析
Jan 07 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
May 07 PHP
php单链表实现代码分享
Jul 04 PHP
php进程间通讯实例分析
Jul 11 PHP
浅析PHP数据导出知识点
Feb 17 PHP
PHP等比例压缩图片的实例代码
Jul 26 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 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
基于文本的留言簿
2006/10/09 PHP
php cli换行示例
2014/04/22 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
详解Yaf框架PHPUnit集成测试方法
2017/12/27 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
2016/06/23 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
2018/08/31 Javascript
详解Vue实战指南之依赖注入(provide/inject)
2018/11/13 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
javascript局部自定义鼠标右键菜单
2020/12/08 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
在Python中进行自动化单元测试的教程
2015/04/15 Python
12步教你理解Python装饰器
2016/02/25 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
2019/01/15 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
大学生个人自我鉴定
2013/12/03 职场文书
爱国口号
2014/06/19 职场文书
国际贸易实训报告
2014/11/05 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
python实现监听键盘
2021/04/26 Python
教你怎么用Python实现多路径迷宫
2021/04/29 Python
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers