验证的核心方法:

  1. public static bool IsAllowedExtension(FileUpload hifile)
  2. {
  3. //原方法是这样的,会提示找不到文件
  4. //System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read);
  5. //System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
  6. var buf = new byte[hifile.PostedFile.InputStream.Length];
  7. hifile.PostedFile.InputStream.Read(buf, , (int)hifile.PostedFile.InputStream.Length);
  8. Stream strem = new MemoryStream(buf);
  9. System.IO.BinaryReader r = new System.IO.BinaryReader(strem);
  10. string fileclass = "";
  11. //这里的位长要具体判断.
  12. byte buffer;
  13. try
  14. {
  15. buffer = r.ReadByte();
  16. fileclass = buffer.ToString();
  17. buffer = r.ReadByte();
  18. fileclass += buffer.ToString();
  19. }
  20. catch
  21. {
  22. }
  23. r.Close();
  24. if (fileclass == "" || fileclass == "")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
  25. {
  26. return true;
  27. }
  28. else
  29. {
  30. return false;
  31. }
  32. }

编码的数值:

JPG = 255216,
        GIF = 7173,
        BMP = 6677,
        PNG = 13780,
        SWF = 6787,
        RAR = 8297,
        ZIP = 8075,
        _7Z = 55122,
        TXT = 102100,
        PDF = 3780,
        DOC = 208207,
        XLSX = 8075,
        XLS = 208207,
        CHM = 7384
        XML = 6063,
        HTML = 6033,
        ASPX = 239187,
        CS = 117115,
        JS = 119105,
        SQL = 255254,

当然,如果不知道可以自己导入文件进行实验,得到对应的数字。

前端可以通过asp.net 自带的RegularExpressionValidator控件进行验证

  1. <div style="margin-top:15px;">选择文件:&nbsp;&nbsp;<asp:FileUpload ID="fileUpload" runat="server" />
  2. <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="fileUpload" ErrorMessage="file type incorrect" ValidationExpression="^.*?\.(xls|xlsx)$"></asp:RegularExpressionValidator>
  3. </div>

参考:
http://developer.51cto.com/art/201305/396627.htm
http://bbs.csdn.net/topics/210082978

ASP.NET FileUpload 上传文件类型验证的更多相关文章

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

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

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

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

  3. asp.net FileUpload上传文件夹并检测所有子文件

    1.在FileUpload控件添加一个属性 webkitdirectory=""就可以上传文件夹了 <asp:FileUpload ID="FileUpload1& ...

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

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

  5. FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输

    fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...

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

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

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

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

  8. input 限制 上传文件类型

    参考:input file控件限制上传文件类型 HTML <input> 标签的 accept 属性 网页上添加一个input file HTML控件: <input id=&quo ...

  9. input type='file'限制上传文件类型

    前端与后台数据进行对接时,就避免不了要使用ajax进行http请求,常用的请求就两个post与get:然而常见的post请求的需求是文件上传,可能我一说到文件上传大家都觉得so  easy啊,没什么嘛 ...

随机推荐

  1. C++的多态总结(静态&动态)

    什么是多态 顾名思义就是同一个事物在不同场景下的多种形态. 静态多态 我们以前说过的函数重载就是一个简单的静态多态,静态多态是编译器在编译期间完成的,编译器会根据实参类型来选择调用合适的函数,如果有合 ...

  2. 2019kali安装以及汉化

    Kali Linux2019.4版本包括了一些令人兴奋的新更新: 一个新的默认桌面环境,Xfce 新的GTK3主题(用于Gnome和Xfce) “Kali Undercover”模式介绍 Kali文档 ...

  3. DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】

    XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...

  4. java特性之二----继承

    1.继承的概述 ============================================================================================ ...

  5. linux 安装tar 命令

    yum install -y tar 查看版本 tar --version

  6. 自定义ViewPager,避免左右滑动时与水平滑动控件冲突

    import android.content.Context;import android.support.v4.view.ViewPager;import android.util.Attribut ...

  7. .NetCore中使用HttpHeader

    httpContextAccessor.HttpContext.Request.Headers[key]; 可以获取一个StringValues,需要注意调试中显示的Headers的key,并不是实际 ...

  8. 第二十一篇 Linux中的环境变量简单介绍

        环境变量之   PATH 定义解释器搜索用户执行命令的路径 获取PATH变量的值: echo $PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/us ...

  9. 第二十篇 Linux条件测试语句相关知识点介绍

      条件测试语句的格式如下: [ 条件表达式 ]        # 条件表达式两侧各有一个空格 按测试对象不同,条件测试语句共分为4中类型: 文件测试语句 逻辑测试语句 整数值比较语句 字符串比较语句 ...

  10. 1.0 Jmeter 安装运行

    1.百度搜索JDK进行下载JDK安装与环境变量配置http://jingyan.baidu.com/article/6dad5075d1dc40a123e36ea3.html ---- 在JDK安装完 ...