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

用ASP.net判断上传文件类型的三种方法的更多相关文章

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

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

  2. JS判断上传文件类型

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

  3. Python判断上传文件类型

    在开发上传服务时,经常需要对上传的文件进行过滤. 本文为大家提供了python通过文件头判断文件类型的方法,非常实用. 代码如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  4. JS 判断上传文件类型

    var video_src_file = $("#video_src_file").val(); var fileTypes = new Array("flv" ...

  5. ASP.NET FileUpload 上传文件类型验证

    验证的核心方法: public static bool IsAllowedExtension(FileUpload hifile) { //原方法是这样的,会提示找不到文件 //System.IO.F ...

  6. python 如何找到某一目录下的文件类型(三种方法)

    #!/usr/bin/env python import glob import os os.chdir(“./”) for file in glob.glob(“*.py”): print file ...

  7. HTML5中的input type为file控件限制上传文件类型及扩展

    简单介绍 input file控件限制上传文件类型如下:1.文件类型中间用,分开:2.html和htm这样的要写成两个: 3实例: <input type="file" na ...

  8. Struts2框架下的文件上传文件类型、名称约定

    Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...

  9. input file标签限制上传文件类型

    用 input 的file类型标签上传文件,有时需要限制上传文件类型,添加accept属性可以实现 <input type="file" accept="image ...

随机推荐

  1. 一种计算e的方法

    原文地址:http://hankjin.blog.163.com/blog/static/3373193720108811316123/ 原理:平均e个(0,1)之间的随机数之和会大于1.原因:n个数 ...

  2. JS----Issue

    HTTP Post Form Data:以明文提交的,因此要加密 http://pajhome.org.uk/crypt/md5/index.html

  3. 全是干货---Linux 高可用(HA)集群基本概念详解

    http://www.linuxidc.com/Linux/2013-08/88522.htm 高可用集群的衡量标准    HA(High Available), 高可用性群集是通过系统的可靠性(re ...

  4. json数值和结构

    JSON 值可以是: l  数字(整数或浮点数) l  字符串(在双引号中) l  逻辑值(true 或 false) l  数组(在方括号中) l  对象(在花括号中) l  null JSON建构 ...

  5. ASP.NET内置对象

    ASP.NET中有六个内置对象 Response:向客户端输出信息或设置客户端输出状态. Request:获取客户端信息. Server:访问服务器的方法和属性. Application:用于将信息保 ...

  6. 【HDOJ】2717 Catch That Cow

    bfs. /* 2717 */ #include <iostream> #include <cstdio> #include <cstring> #include ...

  7. 2015第37周二foxmail邮箱客户端迁移

    foxmail7.0邮箱客户端迁移风波浪费我下午不少时间,不知为何做完foxmail客户端在卡的时候我将其强制关闭,然后将整个邮箱目录拷贝到一台新电脑上,运行客户端居然我要新建账户(账户信息丢失),将 ...

  8. 线性规划||网络流(费用流):COGS 288. [NOI2008] 志愿者招募

    [NOI2008] 志愿者招募 输入文件:employee.in   输出文件:employee.out   简单对比 时间限制:2 s   内存限制:512 MB [问题描述] 申奥成功后,布布经过 ...

  9. 使用vs2010编译 Python \ SIP \ PyQt4

    (1)先使用vs2010编译 Python http://www.cnblogs.com/fortwo/archive/2013/04/16/3023871.html 注意,若编译的为debug版的P ...

  10. centos升级openssh的两种方式

    此文介绍的是服务器在有网络和无网络情况下升级openssh方式. 一.首先介绍一个无网络如何升级: 1.准备相关的包 openssh下载地址:  http://mirror.internode.on. ...