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 相关文章推荐
在WIN98下以apache模块方式安装php
Oct 09 PHP
php下关于中英数字混排的字符串分割问题
Apr 06 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP的PSR规范中文版
Sep 28 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
Smarty实现页面静态化(生成HTML)的方法
May 23 PHP
php从身份证获取性别和出生年月
Feb 09 PHP
关于Laravel-admin的基础用法总结和自定义model详解
Oct 08 PHP
yii2.0框架多模型操作示例【添加/修改/删除】
Apr 13 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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
PHP错误处理函数
2016/04/03 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
firefox火狐浏览器与与ie兼容的2个问题总结
2010/07/20 Javascript
在VS2008中使用jQuery智能感应的方法
2010/12/30 Javascript
JsRender实用入门教程
2014/10/31 Javascript
使用js实现的简单拖拽效果
2015/03/18 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
vue.js单文件组件中非父子组件的传值实例
2018/09/13 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
JavaScript实现shuffle数组洗牌操作示例
2019/01/03 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
Python实现基本线性数据结构
2016/08/22 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
Python WSGI的深入理解
2018/08/01 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
机电专业毕业生求职信
2013/10/27 职场文书
中职生自荐信范文
2014/06/15 职场文书
大学课外活动总结
2014/07/09 职场文书
导游词300字
2015/02/13 职场文书
辞职信标准格式
2015/02/27 职场文书
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server