当前位置:  编程技术>.net/c#/asp.net

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

    来源: 互联网  发布时间:2014-08-25

    本文导语:  一、安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法。 代码如下: Boolean fileOk = false; string path = Server.MapPath("~/images/"); //判断是否已经选取文件 if (Fi...

一、安全性比较低,把文本文件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("alert('文件格式不正确');");
return;
}
}
else
{
Response.Write("alert('你还没有选择文件');");
return;
}
//如果扩展名符合条件,则上传
if (fileOk)
{
FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);
Response.Write("alert('上传成功');");
}

二、不检测文件后缀而是检测文件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("alert('格式不正确')");
}
}
else
{
Response.Write("alert('你还没有选择文件');");
}
//如果扩展名符合条件,则上传
if (fileOk)
{
FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);
Response.Write("alert('上传成功');");
}

三、可以实现真正意义上的文件类型判断
代码如下:

try
{
//判断是否已经选取文件
if (FileUpload1.HasFile)
{
if (IsAllowedExtension(FileUpload1))
{
string path = Server.MapPath("~/images/");
FileUpload1.PostedFile.SaveAs(path + FileUpload1.FileName);
Response.Write("alert('上传成功');");
}
else
{
Response.Write("alert('您只能上传jpg或者gif图片');");
}
}
else
{
Response.Write("alert('你还没有选择文件');");
}
}
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;
}
}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • asp.net超时时间与上传文件大小的设置方法
  • asp.net上传文件小例子
  • asp.net简单的文件上传代码
  • asp.net解决上传4M文件限制
  • asp.net 大文件上传问题的解决方法
  • ASP.NET MVC处理文件上传的例子
  • ASP.NET中上传并读取Excel文件数据示例
  • asp.net上传并读取Excel文件的例子
  • ASP.net WebAPI 上传图片实例
  • c# UpdatePanel无刷新上传图片 asp.net无刷新上传
  • asp.ent 图片上传数据库的代码(c#)
  • asp.net 将图片上传到mysql数据库的方法
  • asp.net使用jQuery Uploadify上传附件示例
  • asp.net上传图片加防伪图片水印并写入数据库的代码一例
  • asp.net上传execl文件后,在页面上加载显示(示例代码)
  • asp.net 上传下载(二进制流)的代码
  • (图文)asp.net 文件上传 带进度条(多种风格)
  • asp.net 文件上传、下载(二进制流保存到数据库)的代码
  • asp.net 多文件上传的代码举例
  • asp.net图片上传实例
  • ASP.NET之 Ajax相关知识介绍及组件图
  • 我想了解一些关于Java怎样与Asp或Asp.net结合方面在未来发展方向的问题?
  • c#/ASP.NET操作cookie(读写)代码示例
  • asp.net UrlEncode对应asp urlencode的处理方法
  • asp.net实例 定义和使用asp:AccessDataSource
  • win2008 r2 服务器环境配置(FTP/ASP/ASP.Net/PHP)
  • asp与asp.net的session共享
  • 如何在unix下发布asp?
  • 怎么让Apache支持Asp?
  • ??谁能把ASP代码改为JSP的
  • Linux平台下哪种方法实现ASP好?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3