一、 安全性比较低,把文本文件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("<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());
            }
            #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;
            }
        }

转载于:https://www.cnblogs.com/xiaolei1314/p/3439493.html

用ASP.net判断上传文件类型的三种方法相关推荐

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

    一. 安全性比较低,把文本文件1.txt改成1.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法.Boolean fileOk = false;string path ...

  2. asp.net 判断上传文件类型的几种方法

    一. 安全性比较低,把文本文件2.txt改成2.jpg照样可以上传,但其实现方法容易理解,实现也简单,所以网上很多还是采取这种方法.只是简单的识别后缀名. Boolean fileOk = false ...

  3. [ASP.NET] 限制上传文件类型的两种方法(转)

    通常,为了防止因用户上传有害文件(如木马.黑客程序)引发的安全性问题,Web程序都会对用户允许上传的文件类型加以限制.而本文将要介绍的就是如何在ASP.NET应用程序中利用Web Control的内置 ...

  4. JS判断上传文件类型

    /*    * 判断图片类型    */     function checkImgType(ths){         if (ths.value == "") {        ...

  5. WebUploader上传文件夹的三种解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  6. flask中使用FileField上传文件的两种方式+前端页面上传文件(flask三种上传文件方式)

    文章目录 上传文件方式一: 1.index.html文件: 2.主文件main.py: 上传文件方式二: 1.index2.html文件: 2.main.py文件: 上传文件方式三: 1.index3 ...

  7. PHP判断上传文件类型

    /*** 读取文件前几个字节 判断文件类型* @return string**/ function checkFileType($filename){$file=fopen($filename,'rb ...

  8. java判断是否安装了pdf_java判断上传文件是否为pdf java图像上传中如何判断是否是jpg格式...

    java怎么判断有没有上传文件 Java平台如何判断用户上传的文件是否是图片不要辜负了自己受过的苦难,这样善良又努力的一个你,一定会得到曾梦寐以分享的所有美好. if(typeof FileReade ...

  9. jquery fileupload 判断上传文件的类型

    //初始化,主要是设置上传参数,以及事件处理方法(回调函数) $("input[name='fileupload']").fileupload({ autoUpload:true, ...

最新文章

  1. 机房监控系统解说--发电机篇
  2. 开发日记-20190626 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)
  3. redis集群(主从配置)
  4. 《大话设计模式》第29章-OOTV杯超级模式大赛—模式总结(四)
  5. u-boot移植第一弹——制作可用的BL1
  6. Educational Codeforces Round 9 A. Grandma Laura and Apples 水题
  7. 一些SAP C/4HANA和S/4HANA同步的测试数据,用于测试目的
  8. java wmi_WMI依赖服务使用WMI查询
  9. 中国队新主帅朱广沪印象
  10. 攻防比赛_猿人学攻防比赛第一题记录
  11. 数据库——“该连接已关闭”问题解决方案
  12. 《数据算法:Hadoop_Spark大数据处理技巧》艾提拉笔记.docx 第1章二次排序:简介 19 第2章二次排序:详细示例 42 第3章 Top 10 列表 54 第4章左外连接 96 第5
  13. 台式计算机 行业标准,GBT 9813.3-2017 计算机通用规范 第3部分:服务器国家标准...
  14. Windows系统经典高级技巧分享
  15. 从零开始搭建一个群管机器人
  16. The name `AssetDatabase' does not exist in the current context
  17. Idea Module not specified
  18. [ChneChen的随笔]中国文化清单上我们还记得什么
  19. discourse 安装_如何使用Discourse在半天之内建立内部团队论坛
  20. 剑指offer刷题(2)--面向华为

热门文章

  1. 服务器版的mysql怎么装_WIN7服务器配置之MySQL数据库安装图解(适用于5.1,5.5的版本)...
  2. java反射比较两个model6_java反射机制
  3. 2022.2.18自制玉米凉粉
  4. 2021.11.18
  5. 2020-07-02 CVPR2020 VL论文讨论(3) 笔记
  6. html调用天气预报wsdl服务,webservice接口调用天气预报例程
  7. learning ddr pagesize calculate
  8. CentOS 7 NAT软路由
  9. JavaScript拖拽
  10. DM8168 编译filesystem步骤