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 5.0对象模型深度探索之绑定
Sep 05 PHP
特详细的PHPMYADMIN简明安装教程
Aug 01 PHP
PHP防CC攻击实现代码
Dec 29 PHP
php后退一页表单内容保存实现方法
Jun 17 PHP
php获取服务器信息的实现代码
Feb 04 PHP
php中time()和mktime()方法的区别
Sep 28 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
php比较两个字符串长度的方法
Jul 13 PHP
高质量PHP代码的50个实用技巧必备(上)
Jan 22 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 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中的CMS的涵义
2007/03/11 PHP
php数组排序usort、uksort与sort函数用法
2014/11/17 PHP
PHP获取文件行数的方法
2015/06/10 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
Prototype Function对象 学习
2009/07/12 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
2011/09/29 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
document.addEventListener使用介绍
2014/03/07 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
jQuery实现查找链接文字替换属性的方法
2016/06/27 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
ionic2懒加载配置详解
2017/09/01 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python中的类学习笔记
2014/09/23 Python
python中正则的使用指南
2016/12/04 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
python获取array中指定元素的示例
2019/11/26 Python
AUC计算方法与Python实现代码
2020/02/28 Python
学习Python需要哪些工具
2020/09/04 Python
用python批量移动文件
2021/01/14 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
英国现代、当代和设计师家具店:Furntastic
2020/07/18 全球购物
软件测试英文面试题
2012/10/14 面试题
活动总结的格式
2014/05/07 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
土地租赁协议书
2015/01/29 职场文书
一般纳税人申请报告
2015/05/18 职场文书
python中对列表的删除和添加方法详解
2022/02/24 Python