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

验证的核心方法:

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); 
            var buf = new byte[hifile.PostedFile.InputStream.Length];
            hifile.PostedFile.InputStream.Read(buf, 0, (int)hifile.PostedFile.InputStream.Length);
            Stream strem = new MemoryStream(buf);
            System.IO.BinaryReader r = new System.IO.BinaryReader(strem);
            string fileclass = "";
            //这里的位长要具体判断. 
            byte buffer;
            try
            {
                buffer = r.ReadByte();
                fileclass = buffer.ToString();
                buffer = r.ReadByte();
                fileclass += buffer.ToString();
            }
            catch
            {
            }
            r.Close();
            if (fileclass == "255216" || fileclass == "7173")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar 
            {
                return true;
            }
            else
            {
                return false;
            }
        } 

 

编码的数值:

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控件进行验证

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

 

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

posted @ 2017-02-23 14:21  龍☆  阅读(2646)  评论(0编辑  收藏  举报