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 相关文章推荐
PHP5.0正式发布 不完全兼容PHP4 新增多项功能
Oct 09 PHP
PHP下用rmdir实现删除目录的三种方法小结
Apr 20 PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
php递归实现无限分类生成下拉列表的函数
Aug 08 PHP
PHP 读取Postgresql中的数组
Apr 14 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
ThinkPHP中ajax使用实例教程
Aug 22 PHP
php实现Mysql简易操作类
Oct 11 PHP
微信获取用户地理位置信息的原理与步骤
Nov 12 PHP
Joomla语言翻译类Jtext用法分析
May 05 PHP
php 多文件上传的实现实例
Oct 23 PHP
PHP基于GD库实现的生成图片缩略图函数示例
Jul 05 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
德劲1102收音机的打理维修案例
2021/03/02 无线电
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
原生javascript实现Tab选项卡切换功能
2015/01/12 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
jquery 将当前时间转换成yyyymmdd格式的实现方法
2016/06/01 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
自学python用什么系统好
2020/06/23 Python
环保倡议书范文
2014/05/12 职场文书
大学生心理活动总结
2014/07/04 职场文书
经典毕业生求职信
2014/07/12 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
2019下半年英语教师的教学工作计划(3篇)
2019/09/25 职场文书
几款流行的HTML5 UI框架比较(小结)
2021/04/08 HTML / CSS
python实现自定义日志的具体方法
2021/05/28 Python
PO模式在selenium自动化测试框架的优势
2022/03/20 Python