文件格式二进制验证
/// <summary>
/// 文件后缀二进制对应[枚举] //此处定义一个格式和二进制数据的枚举
/// </summary>
public enum FileExtension
{
JPG = 255216,
GIF = 7173,
PNG = 13780,
RAR = 8297,
VALIDFILE = 9999999,
ZIP = 8075,
//SWF = 6787,
//_7Z = 55122,
//BMP = 9977,
//EXE = 7790,
//XML = 6063,
//HTML = 6033,
//ASPX = 239187,
//CS = 117115,
//JS = 119105,
TXT = 00,
//SQL = 255254,
}
/// <summary>
/// 将上传文件转成二进制文件.返回文件对应文件格式
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static bool IsAllowedExtension(HttpPostedFile fu, FileExtension[] fileEx) //将上传文件转换为二进制与枚举中的二进制进行对比
{
int fileLen = fu.ContentLength;
byte[] imgArray = new byte[fileLen];
fu.InputStream.Read(imgArray, 0, fileLen);
MemoryStream ms = new MemoryStream(imgArray);
System.IO.BinaryReader br = new System.IO.BinaryReader(ms);
string fileclass = "";
byte buffer;
try
{
buffer = br.ReadByte();
fileclass = buffer.ToString();
buffer = br.ReadByte();
fileclass += buffer.ToString();
}
catch
{
return false;
}
finally
{
br.Close();
ms.Close();
}
foreach (FileExtension fe in fileEx)//如果枚举中存在当前文件格式返回True
{
if (Int32.Parse(fileclass) == (int)fe)
return true;
}
return false;
}
//调用
CommonTools.FileExtension[] fe = { CommonTools.FileExtension.GIF,
CommonTools.FileExtension.JPG, CommonTools.FileExtension.PNG };
if (CommonTools.IsAllowedExtension(file, fe))//从枚举中查找是否存在当前文件格式, 此处的file为HttpPostedFile对象
{
//文件格式正确
}else
{
//非法操作
}
浙公网安备 33010602011771号