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

发布时间 - 2026-01-11 00:42:11    点击率:

本文实例讲述了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  # 扩展名  # 判断  # 文件类型  # finfo_file  # 二进制流  # PHP中获取文件扩展名的N种方法小结  # php获取文件名称和扩展名的方法  # PHP获取文件扩展名的4种方法  # php更改目录及子目录下所有的文件后缀扩展名的代码  # php获得文件扩展名三法  # php文件扩展名判断及获取文件扩展名的N种方法  # php从给定url获取文件扩展名的方法  # PHP获取文件扩展名的方法实例总结  # PHP实现的获取文件mimes类型工具类示例  # php准确获取文件MIME类型的方法  # php实现获取文件mime类型的方法  # PHP获取文件扩展名的常用方法小结【五种方式】  # 种方法  # 程序设计  # 相关内容  # 感兴趣  # 给大家  # 更多关于  # 所述  # 面向对象  # 不通过  # 操作技巧  # 编程技巧  # 讲述了  # finfo_close  # file  # print_r  # span  # echo  # test  # fileInfo 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 公司网站制作需要多少钱,找人做公司网站需要多少钱?  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  长沙做网站要多少钱,长沙国安网络怎么样?  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Android中AutoCompleteTextView自动提示  如何在Windows虚拟主机上快速搭建网站?  如何获取上海专业网站定制建站电话?  Android使用GridView实现日历的简单功能  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  JavaScript如何实现倒计时_时间函数如何精确控制  如何在IIS中新建站点并配置端口与物理路径?  phpredis提高消息队列的实时性方法(推荐)  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel如何实现数据库事务?(DB Facade示例)  打造顶配客厅影院,这份100寸电视推荐名单请查收  html5的keygen标签为什么废弃_替代方案说明【解答】  如何快速生成ASP一键建站模板并优化安全性?  BootStrap整体框架之基础布局组件  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  中山网站推广排名,中山信息港登录入口?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】  java ZXing生成二维码及条码实例分享  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  如何在建站宝盒中设置产品搜索功能?  高防服务器租用指南:配置选择与快速部署攻略  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  iOS正则表达式验证手机号、邮箱、身份证号等  java中使用zxing批量生成二维码立牌  lovemo网页版地址 lovemo官网手机登录  HTML 中如何正确使用模板变量为元素的 name 属性赋值  ,网页ppt怎么弄成自己的ppt?  如何在万网自助建站平台快速创建网站?  JavaScript如何实现错误处理_try...catch如何捕获异常?