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 相关文章推荐
PHP伪静态页面函数附使用方法
Jun 20 PHP
有关JSON以及JSON在PHP中的应用
Apr 09 PHP
字母顺序颠倒而单词顺序不变的php代码
Aug 08 PHP
PHP读取XML值的代码(推荐)
Jan 01 PHP
用PHP实现小写金额转换大写金额的代码(精确到分)
Jan 10 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
php递归函数三种实现方法及如何实现数字累加
Aug 07 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 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学习之运算符相关概念
2011/06/09 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
谈谈php对接芝麻信用踩的坑
2016/12/01 PHP
javascript对象之内置对象Math使用方法
2010/04/16 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
javascript闭包的理解
2015/04/01 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
从零学习node.js之搭建http服务器(二)
2017/02/21 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
vue+canvas实现移动端手写签名
2020/05/21 Javascript
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
查看python下OpenCV版本的方法
2018/08/03 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python日志logging模块使用方法分析
2019/05/23 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
阿迪达斯英国官方网站:adidas英国
2019/08/13 全球购物
实习心得体会
2014/01/02 职场文书
高中地理教学反思
2014/01/29 职场文书
工厂车间标语
2014/06/19 职场文书
超市店庆活动方案
2014/08/31 职场文书
2014年药店工作总结
2014/11/20 职场文书
致青春观后感
2015/06/09 职场文书
遗失证明范文
2015/06/19 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js