第一种:直接获取文件后缀名,但不安全
System.IO.Path.GetExtension(FileName)
第二种:
//真正判断文件类型的关键函数
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; }
}
第三种:
try {
Image img = Image.FromStream(Request.Files[0].InputStream);
img.RawFormat.Guid.ToString() == "xxxxx????xxxxxx" //不同图像格式有不同的Guid
}
catch (ArgumentException exp)
{
//不是图像流
}