ASP.NET在上传文件时对文件类型的高级判断的代码

复制代码 代码如下:

  using System;

  using System.Data;

  using System.Configuration;

  using System.Collections;

  using System.Web;

  using System.Web.Security;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Web.UI.WebControls.WebParts;

  using System.Web.UI.HtmlControls;

  public partial class _Default : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  }

  protected void bt_upload_Click(object sender, EventArgs e)

  {

  try

  {

  if (FileUpload1.PostedFile.FileName == "")

  {

  this.lb_info.Text = "请选择文件!";

  }

  else

  {

  string filepath = FileUpload1.PostedFile.FileName;

  if (IsAllowedExtension(FileUpload1) == true)

  {

  string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1);

  string serverpath = Server.MapPath("images/") + filename;

  FileUpload1.PostedFile.SaveAs(serverpath);

  this.lb_info.Text = "上传成功!";

  }

  else

  {

  this.lb_info.Text = "请上传图片";

  }

  }

  }

  catch (Exception error)

  {

  this.lb_info.Text = "上传发生错误!原因:" + error.ToString();

  }

  }

  public static bool IsAllowedExtension(FileUpload hifile)

  {

  System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);

  System.IO.BinaryReader r = new System.IO.BinaryReader(fs);

  string fileclass = "";

  byte buffer;

  try

  {

  buffer = r.ReadByte();

  fileclass = buffer.ToString();

  buffer = r.ReadByte();

  fileclass += buffer.ToString();

  }

  catch

  {

  }

  r.Close();

  fs.Close();

  if (fileclass == "255216" || fileclass == "7173")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar

  {

  return true;

  }

  else

  {

  return false;

  }

  }

  }

  测试通过....