用ASP.net判断上传文件类型的三种方法
生活随笔
收集整理的這篇文章主要介紹了
用ASP.net判断上传文件类型的三种方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、 安全性比較低,把文本文件1.txt改成1.jpg照樣可以上傳,但其實現方法容易理解,實現也簡單,所以網上很多還是采取這種方法。
Boolean fileOk = false; ??????????string path = Server.MapPath("~/images/"); ??????????//判斷是否已經選取文件 ??????????if (FileUpload1.HasFile) ??????????{ ??????????????//取得文件的擴展名,并轉換成小寫 ??????????????string fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower(); ??????????????//限定只能上傳jpg和gif圖片 ??????????????string[] allowExtension = { ".jpg", ".gif" }; ??????????????//對上傳的文件的類型進行一個個匹對 ??????????????int j = 0; ??????????????for (int i = 0; i < allowExtension.Length; i++) ??????????????{ ??????????????????if (fileExtension == allowExtension[i]) ??????????????????{ ??????????????????????fileOk = true; ??????????????????????return; ??????????????????} ??????????????????else ??????????????????{ ??????????????????????j++; ??????????????????} ??????????????} ??????????????if (j > 0) ??????????????{ ??????????????????Response.Write("<script>alert('文件格式不正確');</script>"); ??????????????????return; ??????????????} ??????????} ??????????else ??????????{ ??????????????Response.Write("<script>alert('你還沒有選擇文件');</script>"); ??????????????return; ??????????} ??????????//如果擴展名符合條件,則上傳 ??????????if (fileOk) ??????????{ ??????????????FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); ??????????????Response.Write("<script>alert('上傳成功');</script>"); ??????????} 二、不檢測文件后綴而是檢測文件MIME內容類型。 Boolean fileOk = false; ???????????string path = Server.MapPath("~/images/"); ???????????//判斷是否已經選取文件 ???????????if (FileUpload1.HasFile) ???????????{ ???????????????//取得文件MIME內容類型 ???????????????string type = this.FileUpload1.PostedFile.ContentType.ToLower(); ???????????????if (type.Contains("image"))??? //圖片的MIME類型為"image/xxx",這里只判斷是否圖片。 ???????????????{ ???????????????????fileOk = true; ???????????????} ???????????????else ???????????????{ ???????????????????Response.Write("<script>alert('格式不正確')</script>"); ???????????????} ???????????} ???????????else ???????????{ ???????????????Response.Write("<script>alert('你還沒有選擇文件');</script>"); ???????????} ???????????//如果擴展名符合條件,則上傳 ???????????if (fileOk) ???????????{ ???????????????FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); ???????????????Response.Write("<script>alert('上傳成功');</script>"); ???????????} 三、可以實現真正意義上的文件類型判斷 try ????????????{ ????????????????//判斷是否已經選取文件 ????????????????if (FileUpload1.HasFile) ????????????????{ ????????????????????if (IsAllowedExtension(FileUpload1)) ????????????????????{ ????????????????????????string path = Server.MapPath("~/images/"); ????????????????????????FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); ????????????????????????Response.Write("<script>alert('上傳成功');</script>"); ????????????????????} ????????????????????else ????????????????????{ ????????????????????????Response.Write("<script>alert('您只能上傳jpg或者gif圖片');</script>"); ????????????????????} ????????????????} ????????????????else ????????????????{ ????????????????????Response.Write("<script>alert('你還沒有選擇文件');</script>"); ????????????????} ????????????} ????????????catch (Exception error) ????????????{ ????????????????Response.Write(error.ToString()); ????????????} ????????????#endregion ????????} //真正判斷文件類型的關鍵函數 ????????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; ????????????} ????????}轉載于:https://www.cnblogs.com/xiaolei1314/p/3439493.html
總結
以上是生活随笔為你收集整理的用ASP.net判断上传文件类型的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android Developers
- 下一篇: 需求基础(第二章)