有时候我们需要真实验证文件的类型,通常网友上传的文件我们只通过扩展名来验证,而扩展名是不靠谱的。
我们可以通过文件头信息,来验证文件是否是真实的某类型文件,如下代码:
public static void CheckTrueFileName()
{
string path = @"D:\Sheet1.doc";
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
System.IO.BinaryReader r = new System.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();
}
通过上面的方法,可以获取到选定文件的格式编码,然后在根据文件格式编码就可以知道这个文件是否是想要的真实格式了。
在这里插入public enum FileExtension
{
/// <summary>
/// 未知类型
/// </summary>
Unknown,
/// <summary>
/// JPG图片文件
/// </summary>
JPG = 255216,
/// <summary>
/// GIF图片文件
/// </summary>
GIF = 7173,
/// <summary>
/// BMP图片文件
/// </summary>
BMP = 6677,
/// <summary>
/// PNG图片文件
/// </summary>
PNG = 13780,
/// <summary>
/// EXE可执行文件
/// </summary>
EXE = 7790,
/// <summary>
/// RAR压缩文件
/// </summary>
RAR = 8297,
/// <summary>
/// ZIP压缩文件
/// </summary>
ZIP = 8075,
/// <summary>
/// XML文本文件
/// </summary>
XML = 6063,
/// <summary>
/// HTML超文本文件
/// </summary>
HTML = 6033,
/// <summary>
/// ASPX模版引擎文件
/// </summary>
ASPX = 239187,
/// <summary>
/// C#类文件
/// </summary>
CS = 117115,
/// <summary>
/// JS脚本文件
/// </summary>
JS = 119105,
/// <summary>
/// TXT文本文件
/// </summary>
TXT = 210187,
/// <summary>
/// SQL数据库脚本文件
/// </summary>
SQL = 255254,
/// <summary>
/// MP3文件
/// </summary>
MP3 = 7368,
/// <summary>
/// BAT文件
/// </summary>
BAT = 64101,
/// <summary>
/// BTSEED文件
/// </summary>
BTSEED = 10056,
/// <summary>
/// RDP文件
/// </summary>
RDP = 255254,
/// <summary>
/// PSD文件
/// </summary>
PSD = 5666,
/// <summary>
/// PDF文件
/// </summary>
PDF = 3780,
/// <summary>
/// CHM文件
/// </summary>
CHM = 7384,
/// <summary>
/// LOG文件
/// </summary>
LOG = 70105,
/// <summary>
/// REG文件
/// </summary>
REG = 8269,
/// <summary>
/// HLP文件
/// </summary>
HLP = 6395,
/// <summary>
/// XLS 文件
/// </summary>
XLS = 208207,
/// <summary>
/// DOC文件
/// </summary>
DOC = 208207,
/// <summary>
/// DOCX 文件
/// </summary>
DOCX = 8075,
/// <summary>
/// XLSX文件
/// </summary>
XLSX = 8075,
/// <summary>
/// PPTX文件
/// </summary>
PPTX = 8075,
/// <summary>
/// MMAP文件
/// </summary>
MMAP = 8075,
/// <summary>
/// CSV文件
/// </summary>
CSV = 4944
}