`
zxlyecf2
  • 浏览: 129535 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

一、通过判断文件后缀名, 安全性比较低,把文本文件xx.txt改成xx.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",".png" };
                //对上传的文件的类型进行一个个匹对 
                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()); 
            } 


//真正判断文件类型的关键函数 
        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; 
            } 
  
        } 

 

0
0
分享到:
评论

相关推荐

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

    主要介绍了用ASP.net判断上传文件类型的三种方法,需要的朋友可以参考下

    asp.net判断上传文件大小

    判断大小判断大小判断大小判断大小判断大小

    ASP.NET 上传文件并验证文件真正的类型

    asp.net使用upload控件上传图片,并可以检测文件的真正格式

    Asp.Net判断上传文件大小.rar

    Asp.Net Web端在后台判断上传文件的大小,如遇到问题可以在博客中回复我

    asp.net文件上传解决方案(图片上传、单文件上传、多文件上传、检查文件类型)

    小编之前也介绍了许多ASP.NET文件上传的解决案例,今天来个asp.net文件上传大集合。 1 使用标准HTML来进行图片上传 前台代码: &lt;body&gt; &lt;form id=form1 runat=server&gt; 使用标准HTML来进行...

    ASP.NET+jQuery 批量文件上传控件及示例程序

    这是一个ASP.NET多文件上传用户控件的源代码,另附上了控件的应用实例,加入了jQuery插件,实现了批量无刷新上传,客户端判断文件上传类型,你可以在页面中直接调用,小巧方便。实例只是为了演示,暂时只支持JPG/GIF...

    ASP.NET上传FTP真的进度条,文件流形式上传

    C#写的ASP.NET上传到FTP上,文件,文件夹都可以。 首先,选择本地文件或者文件夹,然后点击上传按钮以后,有一个压缩过程,该过程也有一个实时更新的进度条,并可以显示压缩所需的实时更新的剩余时间,压缩完成以后...

    asp.net知识库

    在ASP.Net中两种利用CSS实现多界面的方法 如何在客户端调用服务端代码 页面一postback,它就显示页面的最顶端,怎样让它定位在某一位置? 如何保证页面刷新后的滚动条位置 清除网页历史记录,屏蔽后退按钮! 如何传值...

    Asp.net上传文件根据文件MD5判断文件是否已存在

    上传文件判断文件是否已存在根据MD5,判断已上传的文件夹中所有的文件及子文件夹的文件,是否存在重复上传

    asp.net多文件上传代码

    为方便大家比较和改进,另付上单一文件上传程序ftp.aspx和ASP类型的无组件上传程序(default1.asp、upfile1.asp),有兴趣可以比较一下二者的上传速度。 由美灵网络工作室收集整理,并修改了一些bug后发布

    ASP.NET通过byte正确安全的判断上传文件格式

    ASP.NET中在判断文件格式时,我们以前常用的方法就是通过截取扩展名来做判断,或者通过ContentType (MIME) 判断,这两种方法都不太安全,因为这两种方式用户都可以伪造,从而达可以攻击网站,实现给网站挂马等目的。...

    乘风asp.net探针 v1.3

    常用邮件组件、图像组件、文件上传组件信息4.自定义组件信息5.浏览者客户端信息6.空间是否有写入权限,这点很重要,没有写入权限的asp.net空间大部分用不了7.加入判断服务器IP是使用公网iP还是内网IP的功能,现在很...

    asp.net专家疑难解答200问

    如何判断上传图片的高度和宽度 193.如何使用DESCryptoServiceProvider类对数据或者文件进行加密解密 194.如何统计在线人数 195.如何在ASP.NET实现验证码 196.如何在本地取得指定网页的源代码 ...

    微信公众平台消息接口使用(asp.net版)

    4、菜单功能(由于不能使用cookie,所以采用了储存用户名形式来判断当前用户的动作,dbhelp.cs文件里有一个setValue(int s1,int s2,int s3)方法,就是将当前用户的上一个动作置为s1,再上一次为s2,再前一次为s3,...

    ASP判断是否上传真实文件(防止修改后缀).rar

    ASP判断是否上传真实文件(防止修改后缀).rarASP判断是否上传真实文件(防止修改后缀).rar

    ASP.NET在上传文件时对文件类型的高级判断的代码

    代码如下: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls;...

    C# ASP.NET 模块 - 上传与下载模块

    功能如下: 多文件上传功能; 动态添加文件上传控件; 判断上传的文件是否为空; 在上传的图片中选择指定位置添加文字; 上传图片生成缩略图; 文件下载; 断点续传;

    AJAX异步上传(ASP.NET)

    1、经过测试,绝对可以使用。开发环境是VS2010. 2、说是AJAX异步,其实也是通过...3、保存的时候通过获取文件头判断上传文件的类型。 4、本来想采用设计模式的,后来把一些信息放入XML之后,感觉没必要用设计模式了。

Global site tag (gtag.js) - Google Analytics