php文件格式,php 检测文件类型的函数
完整代码如下。
复制代码 代码示例:
//检测文件类型
//by http://www.jbxue.com
function checkFileType($filename){
//文件头
$_typecode = array(
'3780',//PDF
'8075',//.docx,.xlsx,.pptx,.potx,.vsdx,.odt
'208207',//.doc,.xls,.ppt,.vsd,.pot,.wps,.dps,.et
);
$file = fopen($filename, "rb");
//contents = stream_get_contents($file);
//$contents = fread($file, filesize($filename));
$bin = fread($file, 2); //只读2字节
fclose($file);
$strInfo = @unpack("C2chars", $bin);// C为无符号整数,网上搜到的都是c,为有符号整数,这样会产生负数判断不正常
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
exec("file $filename",$output,$return_var);//用linux系统命令file判断上传文件的类型,主要是判断txt,rtf文件类型
$pattern = '/text,/';//rtf和txt文档用file检测都会被检测为text
$_count = preg_match($pattern,strrchr($output[0],":"));
echo $typeCode;
if(in_array($typeCode,$_typecode) || $_count == 1) {
return true;
}else{
return false;
}
}
?>
php文件格式,php 检测文件类型的函数相关推荐
- 根据文件头检测文件类型的完整代码
<?php //检测文件类型 $filename = "11.jpg"; //图片的路径 $file = fopen($filename, "rb");/ ...
- 根据文件数据,检测文件类型
这个函数,我会一直扩充下去.很多资料是网上查的,有自己分析的,当然肯定有bug. 目前头疼的是mp3格式的检测,有的mp3文件前面有一些空白,而且长度不固定. iso的鉴定方式貌似不对,我电脑上的几个 ...
- 绕过content-type检测文件类型上传webshell
声明:以下内容均来自"实验吧"免费公益渗透平台,该平台至今仍旧在维护,估计~~,为此把以前保留的笔记拿来分享下. [实验目的] 1) 理解绕过Content-Type检测文件 ...
- shell学习之脚本练习1(显示ip + 检测文件类型)
学员命令测试 1: ifconfig 网卡 可以显示此网卡的信息 显示信息中包含此网卡使用的ip地址 请用命令过滤此ip并在输出时只显示ip其他信息不显示 脚本编写: 结果: 反思:在练习的过程中,我 ...
- 文件上传在Struts的Action检测文件类型
在页面有文件上传的表单.(只能上传jpg/png文件) 检测根据文件的文件头(不是后缀名)判断文件类型 一.Struts2文件上传 实现规则: (1)在JSP中设定表单控件<s:file na ...
- php 检测编码函数,自己写了一个php检测文件编码的函数
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的. 很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出. 看到有人写了个增强版,用 BOM 判断的, ...
- 如何正确检测文件类型?
在上传文件时,在某些情况下我们希望能限制文件上传的类型,比如限制只能上传 PNG 格式的图片.我们可以通过 input元素的 accept 属性来限制上传的文件类型, 例如: <input ty ...
- MP4文件格式详解——文件类型ftyp
原谅地址:http://blog.csdn.net/pirateleo/article/details/7583321 文件类型ftyp(ISO-14496-12) Author:Pirate Leo ...
- MP4文件格式详解——文件类型ftyp(转)
文件类型ftyp(ISO-14496-12) Author:Pirate Leo Email:codeevoship@gmail.com ISO 14496 - 12 定义了一种封装媒体数据的基础文件 ...
最新文章
- 2016.4.2 动态规划练习--讲课整理
- 解决softmax后列和不为1的bug记录 :问题原因为 s为1维的,来除torch.exp(x)(64x10)时候,维数不对应,需要将s也要转换为2维的即维数为(64x1),才可以广播按行对应相除
- iOS开发-Runtime详解(简书)
- 07.必须修正致命弱点摘录——卓越领导者
- java 天猫模拟登陆_基于servlet+filter+反射模拟实现天猫首页的后端
- 我是怎么进入Oracle这样的大企业的?
- [计算机网络][HTTP]
- 小米再添猛将!原中兴手机CEO曾学忠加盟
- MyCat分布式数据库集群架构工作笔记0003---Mycat的作用
- JAVA连接SQL server
- 【裂缝识别】基于matlab GUI无人机裂缝图像处理系统(带面板)【含Matlab源码 1727期】
- Vue之解析PSD文件(文字)
- DT科技评论第35期:可以解锁任何手机的万能指纹
- 常用的求和公式(级数求和)
- Bebras挑战样题之五——警察能抓住海盗吗?
- CSS 相邻兄弟选择器
- win10下点击开始菜单没响应的解决方案
- L05 Laravel 教程 - 电商实战
- 【MySQL】MyCAT三大配置文件详解(MySQL专栏启动)
- ARMv8 A64 汇编中立即数范围问题分析
热门文章
- 如何安装WIN10和Ubuntu16.04双系统
- SQL SERVER 获取差值最小的数据
- cas67605-64-5/4-(10,15,20-三苯基卟啉-5-基)苯胺/分子量:629.75/分子式:C44H31N5/包装:瓶装/袋装
- libgdx API之Gdx.XXX:无处不在
- libgdx gdx-tiled-preprocessor如何运行
- 判断两个时间是不是同一天
- 追问新知·情绪专题 | 情绪可以被破译吗?
- 从麻花影视的抓包看app防http抓包方式
- 网页突然乱码_打开网页出现乱码怎么办 打开网页出现乱码解决方法【详解】...
- 放射性同位素测量方法的选择