`
zxlyecf2
  • 浏览: 133547 次
  • 性别: 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中的Upload控件。ASP.NET提供了FileUpload控件,允许用户选择本地计算机上的文件,并将其上传到服务器。在...

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

    本篇将详细介绍如何在Asp.Net Web端后台上判断上传文件的大小。 首先,我们需要了解Asp.Net中处理文件上传的基本组件——`HttpPostedFileBase`类。这个类代表了客户端上传到服务器的文件,提供了诸如读取文件、获取...

    asp.net判断上传文件大小

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

    ASP.NET文件上传帮助类 |C#文件上传

    在ASP.NET应用中,文件上传是一项常见的功能,用于让用户上传图片、文档等文件到服务器。在C#中,我们可以创建一个自定义的帮助类(Helper Class)来处理文件上传的逻辑,使得代码更易于管理和维护。以下是对这个...

    图片文件上传代码ASP.NET

    综上所述,通过分析这段ASP.NET中的图片文件上传代码,我们可以清晰地了解到整个文件上传过程中的关键步骤,包括文件对象的获取、文件类型的判断以及文件的保存。这些知识点不仅适用于当前的具体场景,在其他类似的...

    asp.net文件上传并保存数据库

    在ASP.NET中,可以使用`HttpPostedFileBase`的`ContentType`属性检查文件类型,或者通过`FileName`获取文件扩展名进行判断。只允许特定类型的文件上传,其余则拒绝。这样可以保护服务器免受潜在威胁,例如脚本注入...

    asp.net删除文件

    本文将深入探讨如何在ASP.NET中实现文件删除功能,这是一项基本但非常重要的技能,尤其是在处理用户上传的图片(如JPEG、GIF等格式)时。 ### ASP.NET删除文件的核心代码解析 在提供的部分代码中,我们看到一个名...

    ASP.NET使用fileupload控件上传图片

    在ASP.NET Web应用程序中,经常需要处理用户上传的文件,尤其是图片。本文将详细介绍如何使用ASP.NET中的`FileUpload`控件来实现图片的上传,并进一步探讨如何将图片保存到服务器上的指定文件夹以及如何将图片以二...

    ASP.NET CORE使用WebUploader对大文件分片上传,并通过ASP.NET CORE SignalR实时反馈后台处.docx

    【ASP.NET CORE 使用 WebUploader 大文件分片上传与 SignalR 实时反馈】 在 ASP.NET CORE 中,处理大文件上传是一项挑战,特别是当需要实时反馈后台处理进度时。WebUploader 是一个强大的前端文件上传组件,支持...

    asp.net文件与图片处理

    ASP.NET 文件与图片处理是Web开发中的重要环节,它涉及到用户交互、文件上传、安全验证以及图像处理等多个方面。在ASP.NET中,处理文件和图片通常利用内置的控件和类库来实现,如FileUpload控件用于文件上传,而...

    asp.net文件类型与后缀对照表

    了解文件类型与MIME类型的关系,熟悉 ASP.NET 文件类型与后缀对照表,可以帮助我们更好地处理文件上传和下载。同时,我们也需要注意文件类型与浏览器兼容性的问题,以确保我们的应用程序能够在不同的浏览器中正确...

    asp.net支持多文件上传源码

    在ASP.NET中处理多文件上传是一个常见的需求,尤其是在用户需要上传图片、文档等批量文件的场景下。本文将详细探讨如何在ASP.NET中实现动态多文件上传的功能,并基于源码进行解析。 首先,我们要理解ASP.NET中的...

    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 文件上传实例汇总

    本文汇总了***中文件上传的三种常见方法,并对一些细节上的区别进行了说明,目的是为了帮助.NET入门者能够更加轻松地实现文件上传功能。 首先,***通过封装大量的功能在类库中,使得文件上传变得简单。在介绍三种...

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

    在Asp.NET开发中,有时候我们需要确保用户上传的文件是唯一的,避免重复上传相同内容的文件,节省存储空间。为了实现这一目标,一种常见的方法是通过计算文件的MD5(Message-Digest Algorithm 5)哈希值来进行判断。...

    ASP.NET文件上传下载

    ASP.NET 是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能来处理各种Web交互,包括文件的上传和下载。在ASP.NET中,文件上传和下载是常见的需求,尤其是在处理用户交互和数据交换时。下面将详细介绍...

Global site tag (gtag.js) - Google Analytics