php实现不通过扩展名准确判断文件类型的方法【finfo_file方法与二进制流】

 更新时间:2017年04月18日 09:47:38   作者:e路相扶  
这篇文章主要介绍了php实现不通过扩展名准确判断文件类型的方法,涉及php中finfo_file方法与二进制流针对文件类型的相关操作技巧,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

本文实例讲述了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网络编程技巧总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • 详解PHP的Laravel框架中Eloquent对象关系映射使用

    详解PHP的Laravel框架中Eloquent对象关系映射使用

    这篇文章主要介绍了PHP的Laravel框架中Eloquent对象关系映射使用,重点讲述了Eloquent的数据模型间关系,需要的朋友可以参考下
    2016-02-02
  • 浅析php中array_map和array_walk的使用对比

    浅析php中array_map和array_walk的使用对比

    这篇文章给大家先是详细的介绍了array_map()和array_walk()的语法、参数以及注意事项,而后又给大家详细的介绍了其中的关键点,文中介绍的很详细,相信会对大家的理解和学习很有帮助,有需要的朋友们可以参考借鉴,感兴趣的朋友们下面来一起学习学习吧。
    2016-11-11
  • 一个PHP二维数组排序的函数分享

    一个PHP二维数组排序的函数分享

    二维数组在PHP开发中经常遇到,但是他的排序就不如一维数组那样用内置函数来的方便了,下面为大家详细介绍下
    2014-01-01
  • PHP+redis实现的悲观锁机制示例

    PHP+redis实现的悲观锁机制示例

    这篇文章主要介绍了PHP+redis实现的悲观锁机制,简单介绍了redis锁机制与乐观锁、悲观锁等概念,并结合实例形式分析了php+redis实现悲观锁相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • php识别翻转iphone拍摄的颠倒图片

    php识别翻转iphone拍摄的颠倒图片

    这篇文章主要介绍了php识别翻转iphone拍摄的颠倒图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • PHP 模拟登陆功能实例详解

    PHP 模拟登陆功能实例详解

    这篇文章主要介绍了PHP 模拟登陆功能,结合实例形式详细分析了php基于curl的模拟表单登陆及session信息存储相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • php 数据库字段复用的基本原理与示例

    php 数据库字段复用的基本原理与示例

    php 数据库字段复用的基本原理与示例,需要的朋友可以参考下。
    2011-07-07
  • 浅谈php自定义错误日志

    浅谈php自定义错误日志

    本文主要给我们介绍了开启记录日志的原因和方法,都是个人的经验之谈,希望对大家能有所帮助。
    2015-02-02
  • 如何让PHP的代码更安全

    如何让PHP的代码更安全

    虽然PHP是世界上最好的语言,但是也有一些因为弱类型语言的安全性问题出现。针对于PHP代码开发的网站,在给客户做网站安全检测的同时,大大小小的都会存在网站的后台管理页面被绕过并直接登录后台的漏洞,而且每个网站的后台被绕过的方式都不一样。本文将讨论此问题。
    2021-05-05
  • 让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X

    让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X

    让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X...
    2006-12-12

最新评论

?


http://www.vxiaotou.com