用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; } }
相關文章
- ASP.NET上傳檔案對檔案型別的高階判斷ASP.NET型別
- Python判斷上傳檔案型別Python型別
- jsp頁面判斷檔案上傳型別JS型別
- Vim檔案型別判斷型別
- Python 判斷檔案是否存在的三種方法Python
- JS判斷檔案上傳格式JS
- js判斷上傳檔案大小JS
- JS資料型別判斷的幾種方法JS資料型別
- JavaScript資料型別判斷的四種方法JavaScript資料型別
- JavaScript判斷變數型別的四種方法JavaScript變數型別
- js實現的判斷上傳圖片的型別JS型別
- ios判斷檔案或圖片的型別iOS型別
- Linux 中 7 個判斷檔案系統型別的方法Linux型別
- 判斷js中的資料型別的幾種方法JS資料型別
- python準確判斷檔案型別Python型別
- Python判斷物件是否為檔案物件(file object)的三種方法Python物件Object
- 如何判斷沒有字尾的檔案型別?型別
- java通過檔案頭內容判斷檔案型別Java型別
- js根據字尾判斷檔案檔案型別的程式碼JS型別
- 用ASP.NET上傳大檔案ASP.NET
- javascript 判斷各種資料的型別JavaScript型別
- 對於MultipartFile使用tika判斷檔案型別,不會產生臨時檔案的方法型別
- Linux中用st_mode判斷檔案型別Linux型別
- JavaScript專題之型別判斷(上)JavaScript型別
- JS靈巧判斷7種型別的方式JS型別
- C#上傳檔案圖片怎麼判斷格式C#
- 使用帶型別判斷的比較判斷型別
- struts檔案上傳,獲取檔名和檔案型別型別
- 檔案上傳漏洞防範-檔案型別檢測型別
- struts2檔案上傳型別限制 之 zip和rar檔案型別型別
- js判斷型別JS型別
- JS 型別判斷JS型別
- javascript中對變數型別的判斷方法JavaScript變數型別
- 判斷是否有檔案並設定理性,上傳到cos
- 檔案上傳之三基於flash的檔案上傳
- jQuery Validate限定上傳檔案的格式型別jQuery型別
- 再談檔案讀寫:判斷檔案的幾種方法及其優劣對比
- ASP.NET中檔案上傳下載方法集合ASP.NET