ASP.NET上传判断类型,防止黑客上传非法文件

 using System;
 using System.IO;
 using System.Web.UI.WebControls;
 
 namespace Pack
 {
     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;
         }
     }
 }

上传事件判断上传类型:
 protected void btnUpload_Click(object sender, EventArgs e)
 {
     string filename = "";
     Boolean fileOK = false;
     if (FileUpload1.HasFile)
     {
         String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
         String[] allowedExtensions = { ".gif", ".png", ".jpeg", ".jpg" };
         for (int i = 0; i < allowedExtensions.Length; i++)
         {
             if (fileExtension == allowedExtensions<i>)
             {
                 fileOK = true;
             }
         }
     }
 
     FileExtension[] fe = { FileExtension.BMP, FileExtension.GIF, FileExtension.JPG, FileExtension.PNG };
     if (fileOK && FileValidation.IsAllowedExtension(FileUpload1, fe))
     {
         string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
         filename = "/Images/" + DateTime.Now.ToString("yyyyMMddHHmmss") + fileExt;
         FileUpload1.PostedFile.SaveAs(Server.MapPath(filename));
     }
     else
     {
         LTP.Common.MessageBox.Show(this, "只支持以下格式的图片\\rJPG,BMP,GIF,PNG");
         return;
     }
 }
代码路上,我们更专业。