Hello world.

 1             #region 一、 安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法。
 2             Boolean fileOk = false;
 3             string path = Server.MapPath("~/images/");
 4             //判断是否已经选取文件
 5             if (FileUpload1.HasFile)
 6             {
 7                 //取得文件的扩展名,并转换成小写
 8                 string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
 9                 //限定只能上传jpg和gif图片
10                 string[] allowExtension = { ".jpg", ".gif" };
11                 //对上传的文件的类型进行一个个匹对
12                 int j = 0;
13                 for (int i = 0; i < allowExtension.Length; i++)
14                 {
15                     if (fileExtension == allowExtension[i])
16                     {
17                         fileOk = true;
18                         return;
19                     }
20                     else
21                     {
22                         j++;
23                     }
24                 }
25                 if (j > 0)
26                 {
27                     Response.Write("<script>alert('文件格式不正确');</script>");
28                     return;
29                 }
30             }
31             else
32             {
33                 Response.Write("<script>alert('你还没有选择文件');</script>");
34                 return;
35             }
36             //如果扩展名符合条件,则上传
37             if (fileOk)
38             {
39                 FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);
40                 Response.Write("<script>alert('上传成功');</script>");
41             }
42             #endregion

 

 1             #region  二、不检测文件后缀而是检测文件MIME内容类型。
 2             Boolean fileOk = false;
 3             string path = Server.MapPath("~/images/");
 4             //判断是否已经选取文件
 5             if (FileUpload1.HasFile)
 6             {
 7                 //取得文件MIME内容类型
 8                 string type = this.FileUpload1.PostedFile.ContentType.ToLower();
 9                 if (type.Contains("image"))    //图片的MIME类型为"image/xxx",这里只判断是否图片。
10                 {
11                     fileOk = true;
12 
13                 }
14                 else
15                 {
16                     Response.Write("<script>alert('格式不正确')</script>");
17                 }
18             }
19             else
20             {
21                 Response.Write("<script>alert('你还没有选择文件');</script>");
22             }
23             //如果扩展名符合条件,则上传
24             if (fileOk)
25             {
26                 FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);
27                 Response.Write("<script>alert('上传成功');</script>");
28             }
29             #endregion
30         

 

 1        //真正判断文件类型的关键函数
 2         public static bool IsAllowedExtension(FileUpload hifile)
 3         {
 4             System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
 5             System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
 6             string fileclass = "";
 7             //这里的位长要具体判断.
 8             byte buffer;
 9             try
10             {
11                 buffer = r.ReadByte();
12                 fileclass = buffer.ToString();
13                 buffer = r.ReadByte();
14                 fileclass += buffer.ToString();
15 
16             }
17             catch
18             {
19 
20             }
21             r.Close();
22             fs.Close();
23             if (fileclass == "255216" || fileclass == "7173")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
24             {
25                 return true;
26             }
27             else
28             {
29                 return false;
30             }
31 
32         }

 

posted on 2014-04-09 15:02  Ryan.zhu  阅读(1230)  评论(0编辑  收藏  举报
come soon on