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 相关文章推荐
Discuz 5.0 中读取纯真IP数据库函数分析
Mar 16 PHP
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
php面向对象全攻略 (十七) 自动加载类
Sep 30 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
php中使用cookie来保存用户登录信息的实现代码
Mar 08 PHP
CodeIgniter输出中文乱码的两种解决办法
Jun 12 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP使用PDO操作数据库的乱码问题解决方法
Apr 08 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP上传文件时自动分配路径的方法
2015/01/09 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
javascript测试题练习代码
2012/10/10 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
JavaScript设计模式之工厂模式和构造器模式
2015/02/11 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery事件详解
2017/02/23 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
微信小程序实现点赞、取消点赞功能
2018/11/02 Javascript
JS实现鼠标按下拖拽效果
2020/07/23 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
简单谈谈Python的pycurl模块
2018/04/07 Python
Python 字符串与数字输出方法
2018/07/16 Python
Python字节单位转换实例
2019/12/05 Python
pytorch forward两个参数实例
2020/01/17 Python
Python命名空间namespace及作用域原理解析
2020/06/05 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
加大码胸罩、内裤和服装:Just My Size
2019/03/21 全球购物
三年级数学教学反思
2014/01/31 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
口才训练演讲稿范文
2014/09/16 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python