using System.Collections.Generic;
using System.Web.UI.WebControls;
using System.IO;

namespace Pack.Common

...{
public enum FileExtension

...{
JPG = 255216,
GIF = 7173,
BMP = 6677,
PNG = 13780
// 255216 jpg;
// 7173 gif;
// 6677 bmp,
// 13780 png;
// 7790 exe dll,
// 8297 rar
// 6063 xml
// 6033 html
// 239187 aspx
// 117115 cs
// 119105 js
// 210187 txt
//255254 sql
}
public class FileValidation

...{
public static bool IsAllowedExtension(FileUpload fu,FileExtension[] fileEx)

...{
int fileLen = fu.PostedFile.ContentLength;
byte[] imgArray = new byte[fileLen];
fu.PostedFile.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

...{
}
br.Close();
ms.Close();
foreach (FileExtension fe in fileEx)

...{
if (Int32.Parse(fileclass) == (int)fe)
return true;
}
return false;
}
}
}
调用:
Pack.Common.FileExtension[] fe = { Pack.Common.FileExtension.GIF, Pack.Common.FileExtension.JPG };
if (Pack.Common.FileValidation.IsAllowedExtension(FileUpload1, fe))
{
//格式正确
}
本文介绍了一种使用.NET框架验证上传文件类型的实用方法。通过解析文件头信息来确定文件的真实格式,并与预定义的枚举进行比较,确保只有指定类型的文件可以通过验证。

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



