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 安装方法
Oct 09 PHP
在IIS上安装PHP4.0正式版
Oct 09 PHP
使用Curl进行抓取远程内容时url中文编码问题示例探讨
Oct 29 PHP
浅析THINKPHP的addAll支持的最大数据量
Feb 03 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
Yii视图CGridView列表用法实例分析
Jul 12 PHP
php中二分法查找算法实例分析
Sep 22 PHP
CI框架入门之MVC简单示例
Nov 21 PHP
PHP实现添加购物车功能
Mar 06 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
Dec 01 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
兼容PHP5的PHP目录管理函数库
2008/07/10 PHP
PHP教程 基本语法
2009/10/23 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
PHP实现执行外部程序的方法详解
2017/08/17 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
JavaScript 语法集锦 脚本之家基础推荐
2009/11/15 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
超越Jquery_01_isPlainObject分析与重构
2010/10/20 Javascript
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
跟我学习javascript的函数和函数表达式
2015/11/16 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
9种改善AngularJS性能的方法
2017/11/28 Javascript
vue2.0.js的多级联动选择器实现方法
2018/02/09 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
python自动翻译实现方法
2016/05/28 Python
python操作cfg配置文件方式
2019/12/22 Python
用python爬取历史天气数据的方法示例
2019/12/30 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
客服部班长工作责任制
2014/02/25 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
银行自荐信范文
2015/03/25 职场文书
应收账款管理制度
2015/08/06 职场文书
团结友爱主题班会
2015/08/13 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
python 判断文件或文件夹是否存在
2022/03/18 Python
利用Python实现模拟登录知乎
2022/05/25 Python