利用PHP取二进制文件头判断文件类型
<?php
$files = array('D:\no.jpg', 'D:\no.png','D:\no2.JPEG','D:\no.BMP'); $fileTypes = array(
7790 => 'exe',
7784 => 'midi',
8297 => 'rar',
255216 => 'jpg',
7173 => 'gif',
6677 => 'bmp',
13780 => 'png'
); foreach($files as $file) {
$fp = fopen($file, 'rb');
$bin = fread($fp, 2); //利用PHP取二进制文件头判断文件类型,每个文件在产生的时候,他是什么类型的文件,都由这个二进制头部的2个字节决定的
fclose($fp);
$strInfo = unpack("C2chars", $bin);// 函数从二进制字符串对数据进行解包。
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);
$fileType = isset($fileTypes[$typeCode]) ? $fileTypes[$typeCode] : 'unknown';
echo $file , ' type : <b>', $fileType, '</b><br />';
}
利用PHP取二进制文件头判断文件类型的更多相关文章
- PHP取二进制文件头快速判断文件类型的实现代码
通过读取文件头信息来识别文件的真实类型. 一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别,PHP扩展中提供了类似 exif_im ...
- PHP取二进制文件头快速判断文件类型
<?php /*文件扩展名说明 *7173 gif *255216 jpg *13780 png *6677 bmp *239187 txt,aspx,asp,sql *208207 xls.d ...
- Linux中用st_mode判断文件类型
Linux中用st_mode判断文件类型 2012-12-11 12:41 14214人阅读 评论(4) 收藏 举报 分类: Linux(8) C/C++(20) 版权声明:本文为博主原创文章, ...
- PHP读取文件头(2字节)判断文件类型(转)
看到此标题或许你会说是否是多此一举,直接判断扩展名不就知道文件类型了吗,但是扩展名很容易伪造,这样就绕过了判断.大部分的文件都会将一个特殊的数字或字符存放在文件的特定位置里(开始处的2个字节) /** ...
- 用java流方式判断文件类型
这个方法只能在有限的范围内有效.并不是万金油 比如 图片类型判断,音频文件格式判断,视频文件格式判断等这种肯定是2进制且专业性很强的文件类型判断. 下面给出完整版代码 首先是文件类型枚取 packag ...
- UNIX环境编程学习笔记(6)——文件I/O之判断文件类型
lienhua342014-09-01 1 文件类型 我们平时最常接触的文件类型有普通文件(regular file)和目录(di-rectory file),但是 UNIX 系统提供了多种文件类型: ...
- python准确判断文件类型
判断文件类型在开发中非常常见的需求,怎样才能准确的判断文件类型呢?首先大家想到的是文件的后缀,但是非常遗憾的是这种方法是非常不靠谱的,因为文件的后缀是可以随意更改的,而大家都知道后缀在linux系统下 ...
- 使用apache.tika判断文件类型
一. 判断文件类型一般可采用两种方式 1. 后缀名判断 简单易操作,但无法准确判断类型 2. 文件头信息判断 通常可以判断文件类型,但有些文件类型无法判断(如word和excel头信息的前几个字节是一 ...
- Java判断文件类型
通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法: 1. 通过后缀名,如exe,jpg,bmp,rar,zip等等. 2. 通过读取文件,获取文件的Content-type来 ...
随机推荐
- 超牛的VS菜单
所有菜单都重复了,Google到了解决办法:devenv /resetuserdata 但好不容易装好额ReSharper又不见了
- discuz中方法
discuz中检验是否是邮箱 function isemail($email) { && strlen($email) <= && preg_match(&quo ...
- nodejs(1)
node.js 是一个让javascript运行在服务端的开发平台 node.js的环境部署 1.下载安装包 https://nodejs.org/en/ 安装后 打开cmd的dos窗口 运行node ...
- golang 前置补0
package main import ( "fmt" ) func main() { a := 1 fmt.Println(a) //前置补0 fmt.Printf(" ...
- 前端---DOM
一.介绍: http://www.cnblogs.com/wupeiqi/articles/5643298.html 什么是DOM? DOM字面意思是文档对象模型,DOM将网页内的元素与内容呈现为一个 ...
- 软件工程练习, 模块化,单元测试,回归测试,TDD
这是<构建之法>实战教学的一部分.适合作为同学们的第二个程序作业. 第一个程序作业: 请看 “概论” 一章的练习,或者老师的题目,例如这个. 作业要求: 软件工程的作业越来越有意思了, 我 ...
- 关于 Dev中的GridControl 中 GridView 的 PopulateColumns() 方法
最近使用Dev控件,Gridview绑定数据源后不能显示数据,于是在网上查询,说是使用PopulateColumns()方法,可以显示数据.试了一下,管用. 于是在所有更新数据源数据后,都用上了这句话 ...
- JAVA类图
类与类图 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性.操作.关系的对象集合的总称. 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能, ...
- linux 学习6 软件包安装
一.软件包管理简介 二.RPM包管理-rpm命令管理 三.RPM包管理-yum在线管理 四.源码包管理 五.脚本安装包与软件包选择 .软件包分类 源码包 脚本安装包 二进制包(RPM包.系统默认 ...
- 使用ZooKeeper实现软负载均衡(原理)
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,提供的功能包括配置维护.名字服务.分布式同步.组服务等. ZooKeeper会维护一个树形的数据结构,类似于Windows资源管理器 ...