ASPを使用する.NETアップロードファイルの3種類の判断方法(接尾辞,MIME,データストリーム)
15009 ワード
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 }