扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章给大家分享的是有关ASP.net中怎么判断上传文件的类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
专注于为中小企业提供成都网站建设、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业文安免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
一、 安全性比较低,把文本文件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(""); return; } } else { Response.Write(""); return; } //如果扩展名符合条件,则上传 if (fileOk) { FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); Response.Write(""); }
二、不检测文件后缀而是检测文件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(""); } } else { Response.Write(""); } //如果扩展名符合条件,则上传 if (fileOk) { FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); Response.Write(""); }
三、可以实现真正意义上的文件类型判断
try { //判断是否已经选取文件 if (FileUpload1.HasFile) { if (IsAllowedExtension(FileUpload1)) { string path = Server.MapPath("~/images/"); FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName); Response.Write(""); } else { Response.Write(""); } } else { Response.Write(""); } } 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中怎么判断上传文件的类型,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流