利用文件头判断文件类型
上传文件时经常需要做文件类型判断,例如图片、文档等,普通做法是直接判断文件后缀名,而文艺青年为了防止各种攻击同时也会加上使用文件头信息判断文件类型。
原理很简单:用文件头判断,直接读取文件的前2个字节即可。
Demo
using System; using System.IO; namespace HelloWorld { class Program { static void Main(string[] args) { FileStream fs = new FileStream(@"C:\test.rar", FileMode.Open, FileAccess.Read); BinaryReader reader = new BinaryReader(fs);//转换为二进制流 byte[] buff = new byte[2]; string result = string.Empty; try { fs.Read(buff, 0, 2); result = buff[0].ToString() + buff[1].ToString(); } catch (Exception ex) { throw ex; } reader.Close(); fs.Close(); if (result == "8297")//rar:8297 { Console.WriteLine("文件格式是rar." + result); } else { Console.WriteLine("文件格式不是rar." + result); } Console.ReadLine(); } } } |
附常见文件的文件头信息
常见文件的文件头(十进制)
jpg: 255,216
gif: 71,73
bmp: 66,77
png: 137,80
doc: 208,207
docx: 80,75
xls: 208,207
xlsx: 80,75
js: 239,187
swf: 67,87
txt: 70,67
mp3: 73,68
wma: 48,38
mid: 77,84
rar: 82,97
zip: 80,75
xml: 60,63
常用文件的文件头如下(16进制):
JPEG (jpg),文件头:FFD8FF
PNG (png),文件头:89504E47
GIF (gif),文件头:47494638
TIFF (tif),文件头:49492A00
Windows Bitmap (bmp),文件头:424D
CAD (dwg),文件头:41433130
Adobe Photoshop (psd),文件头:38425053
Rich Text Format (rtf),文件头:7B5C727466
XML (xml),文件头:3C3F786D6C
HTML (html),文件头:68746D6C3E
Email [thorough only] (eml),文件头:44656C69766572792D646174653A
Outlook Express (dbx),文件头:CFAD12FEC5FD746F
Outlook (pst),文件头:2142444E
MS Word/Excel (xls.or.doc),文件头:D0CF11E0
MS Access (mdb),文件头:5374616E64617264204A
WordPerfect (wpd),文件头:FF575043
Postscript (eps.or.ps),文件头:252150532D41646F6265
Adobe Acrobat (pdf),文件头:255044462D312E
Quicken (qdf),文件头:AC9EBD8F
Windows Password (pwl),文件头:E3828596
ZIP Archive (zip),文件头:504B0304
RAR Archive (rar),文件头:52617221
Wave (wav),文件头:57415645
AVI (avi),文件头:41564920
Real Audio (ram),文件头:2E7261FD
Real Media (rm),文件头:2E524D46
MPEG (mpg),文件头:000001BA
MPEG (mpg),文件头:000001B3
Quicktime (mov),文件头:6D6F6F76
Windows Media (asf),文件头:3026B2758E66CF11
MIDI (mid),文件头:4D546864
转载于:https://www.cnblogs.com/fanyong/archive/2012/03/21/2409582.html
利用文件头判断文件类型相关推荐
- python如何区分文件类型_python通过文件头判断文件类型
对于提供上传的服务器,需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,避免不必要的麻烦. 分享代码如下 import struct # 支持文件类型 # 用16进 ...
- php读取某类型文件代码,php代码实现读取文件头判断文件类型
php代码实现读取文件头判断文件类型,支持图片.rar.exe等后缀. 案例: //为图片的路径可以用d:/upload/11.jpg等绝对路径 $file = fopen($filename, &q ...
- 根据文件头判断文件类型
10个字节判断 [java] view plaincopy private static final HashMap<String, String> mFileTypes = new Ha ...
- 通过16进制文件头判断文件类型
package cn.edu.hactcm.cfcms.utils; import java.io.FileInputStream; import java.io.IOException; impor ...
- java文件头_Java根据文件头判断文件类型
public class FileType { private final static Map FILE_TYPE_MAP = new HashMap(); private FileType(){} ...
- python 通过文件头获取文件类型mimetype
一.MIME Type是什么? 资源的媒体类型 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序打开 ...
- 根据文件头判断文件真实类型,让更改后缀的文件无所遁形!
MultipartFile转为File package cn.com.ebidding.web.file.util; import org.springframework.web.multipart. ...
- java判断文件头_java通过文件头来判断文件类型
importjava.io.FileInputStream;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map. ...
- SpringBoot 文件上传 通过Content-Type和文件头判断文件类型
SpringBoot 文件上传 通过Content-Type和文件头判断文件类型 一.关于MIME MIME的全称是Multipurpose Internet Mail Extensions,即多用途 ...
最新文章
- git 关于commit命令的修改
- R语言使用两个分类变量创建双向表(Two Way Table、两个分类变量的频率表)实战: 矩阵的双向表、dataframe的双向表、条形图和马赛克图来可视化频率表
- Python学习笔记一:数据类型转换
- matlab安装配置vc出错,64位系统安装matlab出现mexopts.bat及出现缺少或无法安装c++ compilers 故障的解决办法.pdf...
- 「CodePlus 2017 12 月赛」火锅盛宴
- 演练 获取所有电视频道 FullChannels.xml c# 1614256914
- linux系统重启方式,查看linux系统重启的命令和方式
- IO 设备的分类与概念、IO控制器
- python实现奇异值分解_奇异值分解原理及Python实例
- win10计算机系统优化设置,Win10不如win7?超实用win10系统优化设置,让电脑运行更流畅!...
- 什么是取整?有几种取整方式?C语言又是哪种方式?取模取余一样吗?
- 鸿蒙渊主线任务,天下3易信公众平台
- 《商业数据分析》读书笔记(一)
- Tello:无人机新姿势识别(小创实验)
- vue 条件判断绑定内联样式
- 不舍红尘,只因恋上你
- AutoCAD Electrical 2022—线的相关属性
- Picasso图片加载框架的使用
- 金山快盘开发 (一)
- 中间件金蝶的编码设置