日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用ASP.net判断上传文件类型的三种方法

發布時間:2025/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用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判断上传文件类型的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。