C#判断文件的真实格式

来源:互联网 发布:阿卢浮漂淘宝官网 编辑:程序博客网 时间:2024/05/20 23:34

近日做一个在线解压的插件,仅限制上传ZIP格式,自己尝试将原RAR的压缩包改扩展名为ZIP,骗过了扩展名验证,但在解压的时候出现了异常。于是在网上找验证文件真实格式的方法。

 

转自:http://blog.163.com/china__xuhua/blog/static/199723169201111161478889/

 

01public staticvoid CheckTrueFileName()
02{
03    stringpath = @"D:\Sheet1.doc";
04    System.IO.FileStream fs =new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
05    System.IO.BinaryReader r =new System.IO.BinaryReader(fs);
06    stringbx = " ";
07    bytebuffer;
08    try
09    {
10        buffer = r.ReadByte();
11        bx = buffer.ToString();
12        buffer = r.ReadByte();
13        bx += buffer.ToString();
14    }
15    catch(Exception exc)
16    {
17        Console.WriteLine(exc.Message);
18    }
19    r.Close();
20    fs.Close();
21    //真实的文件类型
22    Console.WriteLine(bx);
23    //文件名,包括格式
24    Console.WriteLine(System.IO.Path.GetFileName(path));
25    //文件名, 不包括格式
26    Console.WriteLine(System.IO.Path.GetFileNameWithoutExtension(path));
27    //文件格式
28    Console.WriteLine(System.IO.Path.GetExtension(path));
29    Console.ReadLine();
30}

 

 通过上面的方法,可以获取到选定文件的格式编码,然后在根据文件格式编码就可以知道这个文件是否是想要的真实格式了。

01public enumFileExtension
02    {
03        JPG = 255216,
04        GIF = 7173,
05        BMP = 6677,
06        PNG = 13780,
07        COM = 7790,
08        EXE = 7790,
09        DLL = 7790,
10        RAR = 8297,
11        ZIP = 8075,
12        XML = 6063,
13        HTML = 6033,
14        ASPX = 239187,
15        CS = 117115,
16        JS = 119105,
17        TXT = 210187,
18        SQL = 255254,
19        BAT = 64101,
20        BTSEED = 10056,
21        RDP = 255254,
22        PSD = 5666,
23        PDF = 3780,
24        CHM = 7384,
25        LOG = 70105,
26        REG = 8269,
27        HLP = 6395,
28        DOC = 208207,
29        XLS = 208207,
30        DOCX = 208207,
31        XLSX = 208207,
32    }

 

实例:string a=CheckTrueFileName();

if(a=="208207")那么这个文件就是excel文件。否则就不是。

本文出自 I'm 大宝,转载时请注明出处及相应链接。

原创粉丝点击