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 相关文章推荐
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
支持oicq头像的留言簿(二)
Oct 09 PHP
php split汉字
Jun 05 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
隐性调用php程序的方法
Jun 13 PHP
php结合正则获取字符串中数字
Jun 19 PHP
学习php设计模式 php实现适配器模式
Dec 07 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
Jul 18 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生成静态页面详解
2006/12/05 PHP
PHP daddslashes 使用方法介绍
2012/10/26 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP配置ZendOpcache插件加速
2019/02/14 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
2010/04/01 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
JavaScript和CSS交互的方法汇总
2014/12/02 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
vue.js入门教程之计算属性
2016/09/01 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
[02:56]DOTA2亚洲邀请赛 VG出场战队巡礼
2015/02/07 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
python之yield表达式学习
2014/09/02 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
python版学生管理系统
2018/01/10 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
django允许外部访问的实例讲解
2018/05/14 Python
详解python3中的真值测试
2018/08/13 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Tensorflow 实现释放内存
2020/02/03 Python
HTML5中form如何关闭自动完成功能的方法
2018/07/02 HTML / CSS
华为C++笔试题
2014/08/05 面试题
为什么会有内存对齐
2016/10/10 面试题
青春无悔演讲稿
2014/05/08 职场文书
俞敏洪北大演讲稿
2014/05/22 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
房屋授权委托书范本
2014/10/07 职场文书
代领报检证委托书范本
2014/10/11 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL