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
PHP错误抑制符(@)导致引用传参失败Bug的分析
May 02 PHP
PHP数组循环操作详细介绍 附实例代码
Feb 03 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
php编写的简单页面跳转功能实现代码
Nov 27 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
php实现有趣的人品测试程序实例
Jun 08 PHP
高质量PHP代码的50个实用技巧必备(下)
Jan 22 PHP
php中使用websocket详解
Sep 23 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
Apr 12 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 a simple smtp class
2007/11/26 PHP
超级好用的一个php上传图片类(随机名,缩略图,加水印)
2010/06/30 PHP
php 判断服务器操作系统的类型
2014/02/17 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
基于jquery的无限级联下拉框js插件
2011/10/29 Javascript
JS的replace方法介绍
2012/10/20 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
js获取Get值的方法
2016/09/29 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
微信开发 使用picker封装省市区三级联动模板
2016/10/28 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
Express本地测试HTTPS的示例代码
2018/06/06 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
[05:34]2014DOTA2国际邀请赛中国区预选赛精彩TOPPLAY第二弹
2014/06/25 DOTA
简明 Python 基础学习教程
2007/02/08 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
python操作mysql数据库
2017/03/05 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Python使用Pickle模块进行数据保存和读取的讲解
2019/04/09 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python3 获取文件属性的方式(时间、大小等)
2020/03/12 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
用python制作个视频下载器
2021/02/01 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
合同协议书格式
2014/04/18 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
教师岗位职责范本
2015/04/02 职场文书
python开发飞机大战游戏
2021/07/15 Python