文件格式二进制验证

/// <summary>
        /// 文件后缀二进制对应[枚举]  //此处定义一个格式和二进制数据的枚举
        /// </summary>
        public enum FileExtension
        {
            JPG = 255216,
            GIF = 7173,
            PNG = 13780,
            RAR = 8297,
            VALIDFILE = 9999999,
            ZIP = 8075,
            //SWF = 6787,
            //_7Z = 55122,
            //BMP = 9977,
            //EXE = 7790,
            //XML = 6063,
            //HTML = 6033,
            //ASPX = 239187,
            //CS = 117115,
            //JS = 119105,
            TXT = 00,
            //SQL = 255254,
        }
        /// <summary>
        /// 将上传文件转成二进制文件.返回文件对应文件格式
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static bool IsAllowedExtension(HttpPostedFile fu, FileExtension[] fileEx)  //将上传文件转换为二进制与枚举中的二进制进行对比
        {
            int fileLen = fu.ContentLength;
            byte[] imgArray = new byte[fileLen];
            fu.InputStream.Read(imgArray, 0, fileLen);
            MemoryStream ms = new MemoryStream(imgArray);
            System.IO.BinaryReader br = new System.IO.BinaryReader(ms);
            string fileclass = "";
            byte buffer;
            try
            {
                buffer = br.ReadByte();
                fileclass = buffer.ToString();
                buffer = br.ReadByte();
                fileclass += buffer.ToString();
            }
            catch
            {
                return false;
            }
            finally
            {
                br.Close();
                ms.Close();
            }
            foreach (FileExtension fe in fileEx)//如果枚举中存在当前文件格式返回True
            {
                if (Int32.Parse(fileclass) == (int)fe)
                    return true;
            }
            return false;
        }

//调用
                    CommonTools.FileExtension[] fe = { CommonTools.FileExtension.GIF, CommonTools.FileExtension.JPG, CommonTools.FileExtension.PNG };
                    if (CommonTools.IsAllowedExtension(file, fe))//从枚举中查找是否存在当前文件格式, 此处的file为HttpPostedFile对象
                    {
                          //文件格式正确
                    }else
                    {
                          //非法操作
                    }

posted on 2012-08-23 16:02  yumen_  阅读(406)  评论(1)    收藏  举报

导航