转自:
http://blog.youkuaiyun.com/snakorse/article/details/20471429
通过读取文件内容来判断。
所有的图片文件都包括:文件识别头和图象数据两部分,
其中文件识别头用来让 计算机判断是哪种文件 格式。
其中文件识别头用来让 计算机判断是哪种文件 格式。
JPEG 所有的JPEG文件以字符串“0xFFD8”开头,并以字符串“0xFFD9”结束。依此便可判别是否是JPEG文件。
BMP文件以字符串“0x4D42”开头
gif头六个是 GIF89a或 GIF87a
大部分都是通过将文件读成二进制流,取前两个字节判断,比如.jpg的是255216.代码如下:
- public static FileExtension CheckTextFile(string fileName)
- {
- FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
- System.IO.BinaryReader br = new System.IO.BinaryReader(fs);
- string fileType = string.Empty; ;
- try
- {
- byte data = br.ReadByte();
- fileType += data.ToString();
- data = br.ReadByte();
- fileType += data.ToString();
- FileExtension extension;
- try
- {
- extension = (FileExtension)Enum.Parse(typeof(FileExtension), fileType);
- }
- catch
- {
- extension=FileExtension.VALIDFILE
- }
- return extension;
- }
- catch (Exception ex)
- {
- throw ex;
- }
- finally
- {
- if (fs != null)
- {
- fs.Close();
- br.Close();
- }
- }
- }
- }
- public enum FileExtension
- {
- JPG = 255216,
- GIF = 7173,
- PNG = 13780,
- SWF = 6787,
- RAR = 8297,
- ZIP = 8075,
- _7Z = 55122,
- VALIDFILE=9999999
- }