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注销代码(session注销)
May 31 PHP
php curl的深入解析
Jun 02 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
wordpress自定义url参数实现路由功能的代码示例
Nov 28 PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
PHP中require和include路径问题详解
Dec 25 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 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
PHP 5.3.0 安装分析心得
2009/08/07 PHP
PHP session会话的安全性分析
2011/09/08 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
js 图片轮播(5张图片)
2008/12/30 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
2017/12/15 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python 计算任意两向量之间的夹角方法
2019/07/05 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
python科学计算之narray对象用法
2019/11/25 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
python实现信号时域统计特征提取代码
2020/02/26 Python
python计算导数并绘图的实例
2020/02/29 Python
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
合作经营协议书范本
2014/04/17 职场文书
个人承诺书怎么写
2014/05/24 职场文书
地心历险记观后感
2015/06/15 职场文书
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
Vue实现跑马灯样式文字横向滚动
2021/11/23 Vue.js