近日做一个在线解压的插件,仅限制上传ZIP格式,自己尝试将原RAR的压缩包改扩展名为ZIP,骗过了扩展名验证,但在解压的时候出现了异常。于是在网上找验证文件真实格式的方法。
转自:http://blog.163.com/china__xuhua/blog/static/199723169201111161478889/
01 | public static void CheckTrueFileName() |
02 | { |
03 | string path = @"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 | string bx = " "; |
07 | byte buffer; |
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 | } |
通过上面的方法,可以获取到选定文件的格式编码,然后在根据文件格式编码就可以知道这个文件是否是想要的真实格式了。
01 | public enum FileExtension |
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 大宝,转载时请注明出处及相应链接。
426

被折叠的 条评论
为什么被折叠?



