完整代码如下。

复制代码 代码示例:

//检测文件类型

//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 检测文件类型的函数相关推荐

  1. 根据文件头检测文件类型的完整代码

    <?php //检测文件类型 $filename = "11.jpg"; //图片的路径 $file = fopen($filename, "rb");/ ...

  2. 根据文件数据,检测文件类型

    这个函数,我会一直扩充下去.很多资料是网上查的,有自己分析的,当然肯定有bug. 目前头疼的是mp3格式的检测,有的mp3文件前面有一些空白,而且长度不固定. iso的鉴定方式貌似不对,我电脑上的几个 ...

  3. 绕过content-type检测文件类型上传webshell

    声明:以下内容均来自"实验吧"免费公益渗透平台,该平台至今仍旧在维护,估计~~,为此把以前保留的笔记拿来分享下. [实验目的]    1) 理解绕过Content-Type检测文件 ...

  4. shell学习之脚本练习1(显示ip + 检测文件类型)

    学员命令测试 1: ifconfig 网卡 可以显示此网卡的信息 显示信息中包含此网卡使用的ip地址 请用命令过滤此ip并在输出时只显示ip其他信息不显示 脚本编写: 结果: 反思:在练习的过程中,我 ...

  5. 文件上传在Struts的Action检测文件类型

    在页面有文件上传的表单.(只能上传jpg/png文件) 检测根据文件的文件头(不是后缀名)判断文件类型 一.Struts2文件上传  实现规则: (1)在JSP中设定表单控件<s:file na ...

  6. php 检测编码函数,自己写了一个php检测文件编码的函数

    关于文件编码的检测,百度一下一大把都是,但是确实没有能用的. 很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出. 看到有人写了个增强版,用 BOM 判断的, ...

  7. 如何正确检测文件类型?

    在上传文件时,在某些情况下我们希望能限制文件上传的类型,比如限制只能上传 PNG 格式的图片.我们可以通过 input元素的 accept 属性来限制上传的文件类型, 例如: <input ty ...

  8. MP4文件格式详解——文件类型ftyp

    原谅地址:http://blog.csdn.net/pirateleo/article/details/7583321 文件类型ftyp(ISO-14496-12) Author:Pirate Leo ...

  9. MP4文件格式详解——文件类型ftyp(转)

    文件类型ftyp(ISO-14496-12) Author:Pirate Leo Email:codeevoship@gmail.com ISO 14496 - 12 定义了一种封装媒体数据的基础文件 ...

最新文章

  1. 2016.4.2 动态规划练习--讲课整理
  2. 解决softmax后列和不为1的bug记录 :问题原因为 s为1维的,来除torch.exp(x)(64x10)时候,维数不对应,需要将s也要转换为2维的即维数为(64x1),才可以广播按行对应相除
  3. iOS开发-Runtime详解(简书)
  4. 07.必须修正致命弱点摘录——卓越领导者
  5. java 天猫模拟登陆_基于servlet+filter+反射模拟实现天猫首页的后端
  6. 我是怎么进入Oracle这样的大企业的?
  7. [计算机网络][HTTP]
  8. 小米再添猛将!原中兴手机CEO曾学忠加盟
  9. MyCat分布式数据库集群架构工作笔记0003---Mycat的作用
  10. JAVA连接SQL server
  11. 【裂缝识别】基于matlab GUI无人机裂缝图像处理系统(带面板)【含Matlab源码 1727期】
  12. Vue之解析PSD文件(文字)
  13. DT科技评论第35期:可以解锁任何手机的万能指纹
  14. 常用的求和公式(级数求和)
  15. Bebras挑战样题之五——警察能抓住海盗吗?
  16. CSS 相邻兄弟选择器
  17. win10下点击开始菜单没响应的解决方案
  18. L05 Laravel 教程 - 电商实战
  19. 【MySQL】MyCAT三大配置文件详解(MySQL专栏启动)
  20. ARMv8 A64 汇编中立即数范围问题分析

热门文章

  1. 如何安装WIN10和Ubuntu16.04双系统
  2. SQL SERVER 获取差值最小的数据
  3. cas67605-64-5/4-(10,15,20-三苯基卟啉-5-基)苯胺/分子量:629.75/分子式:C44H31N5/包装:瓶装/袋装
  4. libgdx API之Gdx.XXX:无处不在
  5. libgdx gdx-tiled-preprocessor如何运行
  6. 判断两个时间是不是同一天
  7. 追问新知·情绪专题 | 情绪可以被破译吗?
  8. 从麻花影视的抓包看app防http抓包方式
  9. 网页突然乱码_打开网页出现乱码怎么办 打开网页出现乱码解决方法【详解】...
  10. 放射性同位素测量方法的选择