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中static和const关键字的区别
Mar 19 PHP
隐性调用php程序的方法
Mar 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
destoon首页调用求购供应信息的地区名称的方法
Aug 21 PHP
让ThinkPHP支持大小写url地址访问的方法
Oct 31 PHP
php获取url参数方法总结
Nov 13 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
Nov 10 PHP
详解如何在云服务器上部署Laravel
Jun 30 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 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
php二分法在IP地址查询中的应用
2008/08/12 PHP
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
一个完整的PHP类包含的七种语法说明
2015/06/04 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
js获取url中"?"后面的字串方法
2014/05/15 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
2016/05/12 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
Vue页面骨架屏注入方法
2018/05/13 Javascript
如何为vue的项目添加单元测试
2018/12/19 Javascript
js实现京东秒杀倒计时功能
2019/01/21 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python中List.count()方法的使用教程
2015/05/20 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
python写入文件自动换行问题的方法
2019/07/05 Python
Flask-WTF表单的使用方法
2019/07/12 Python
基于python实现复制文件并重命名
2020/09/16 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
如何利用find命令查找文件
2015/02/07 面试题
《海伦?凯勒》教学反思
2014/04/17 职场文书
管理标语大全
2014/06/24 职场文书
初任公务员培训心得体会
2016/01/08 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
Java死锁的排查
2022/05/11 Java/Android
CentOS7安装MySQL8的超级详细教程(无坑!)
2022/06/10 Servers