C#判斷檔案的真實型別(非副檔名判斷)
阿新 • • 發佈:2019-01-10
有時候我們需要真實驗證檔案的型別,通常網友上傳的檔案我們只通過副檔名來驗證,而副檔名是不靠譜的。
我們可以通過檔案頭資訊,來驗證檔案是否是真實的某型別檔案,如下程式碼:
publicstaticvoidCheckTrueFileName(){string path =@"D:\Sheet1.doc";System.IO.FileStream fs =newSystem.IO.FileStream(path,System.IO.FileMode.Open,System.IO.FileAccess.Read);System.IO.BinaryReader r =newSystem.IO.BinaryReader (fs);string bx =" ";byte buffer;try{
buffer = r.ReadByte();
bx = buffer.ToString();
buffer = r.ReadByte();
bx += buffer.ToString();}catch(Exception exc){Console.WriteLine(exc.Message);}
r.Close();
fs.Close();//真實的檔案型別Console.WriteLine(bx);//檔名,包括格式Console.WriteLine (System.IO.Path.GetFileName(path));//檔名, 不包括格式Console.WriteLine(System.IO.Path.GetFileNameWithoutExtension(path));//檔案格式Console.WriteLine(System.IO.Path.GetExtension(path));Console.ReadLine();}
通過上面的方法,可以獲取到選定檔案的格式編碼,然後在根據檔案格式編碼就可以知道這個檔案是否是想要的真實格式了。
publicenumFileExtension{
JPG =255216,
GIF =7173,
BMP =6677,
PNG =13780,
COM =7790,
EXE =7790,
DLL =7790,
RAR =8297,
ZIP =8075,
XML =6063,
HTML =6033,
ASPX =239187,
CS =117115,
JS =119105,
TXT =210187,
SQL =255254,
BAT =64101,
BTSEED =10056,
RDP =255254,
PSD =5666,
PDF =3780,
CHM =7384,
LOG =70105,
REG =8269,
HLP =6395,
DOC =208207,
XLS =208207,
DOCX =208207,
XLSX =208207,}
呼叫例項:string a=CheckTrueFileName();
if(a=="208207")
那麼這個檔案就是excel檔案。否則就不是。