前面兩步檢查屬初級檢查(當然,在前臺用JS作了客戶端的擴展名檢查),如果通過再使用圖片類檢查,如果是真是圖片 就能通過,否則不行(已經(jīng)過測試)
protected bool isValidImage(System.Web.HttpPostedFile postedFile) { string sMimeType = postedFile.ContentType.ToLower(); if (sMimeType.IndexOf("image/") < 0) return false; if (postedFile.ContentLength < 50) return false; try { System.Drawing.Image img = System.Drawing.Image.FromStream(postedFile.InputStream); if (img.Width * img.Height < 1) return false; img.Dispose(); } catch { return false; } return true; }
還有另外一種方式
//真正是否真的為圖片 public static bool IsAllowedExtension(FileUpload hifile) { FileStream fs = new FileStream(hifile.PostedFile.FileName,FileMode.Open,FileAccess.Read); BinaryReader r = new BinaryReader(fs); string fileclass = ""; byte buffer; try { buffer = r.ReadByte(); fileclass = buffer.ToString(); buffer = r.ReadByte(); fileclass += buffer.ToString(); } catch { } r.Close(); fs.Close(); //說明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar,|| fileclass=="13780"||fileclass=="6677" if (fileclass == "255216" || fileclass == "7173") { return true; } else { return false; } }