关闭

.net上传文件时获取文件的真实类型

832人阅读 评论(0) 收藏 举报
  1. using System;     
    using System.Collections.Generic;     
    using System.Linq;     
    using System.Web;     
    using System.Web.UI;     
    using System.Web.UI.WebControls;     
    using System.IO;     
        
    public partial class niunantest : System.Web.UI.Page     
    {     
        protected void Page_Load(object sender, EventArgs e)     
        {     
        
        }     
        protected void Button1_Click(object sender, EventArgs e)     
        {     
            string str = FileUpload1.PostedFile.ContentType;     
            Response.Write("文件类型:"+str);     
        
            string filename = "";     
        
            FileExtension[] fe = { FileExtension.GIF, FileExtension.JPG, FileExtension.PNG };     
            if (FileValidation.IsAllowedExtension(FileUpload1, fe))     
            {     
                string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();     
                Response.Write("<br>验证通过!");     
                //filename = "/Images/" + DateTime.Now.ToString("yyyyMMddHHmmss") + fileExt;     
                //FileUpload1.PostedFile.SaveAs(Server.MapPath(filename));     
            }     
            else    
            {     
                Response.Write( "<br>验证不通过,只支持以下格式的图片:JPG,GIF,PNG");     
                return;     
            }     
        
        }     
        
        public enum FileExtension     
        {     
           
           JPG = 255216,
            GIF = 7173,
            BMP = 6677,
            PNG = 13780,
            RAR = 8297,
            jpg = 255216,
            exe = 7790,
            xml = 6063,
            html = 6033,
            aspx = 239187,
            cs = 117115,
            js = 119105,
            txt = 210187,
            sql = 255254
        
        }     
        
        public class FileValidation     
        {     
            public static bool IsAllowedExtension(FileUpload fu, FileExtension[] fileEx)     
            {     
                int fileLen = fu.PostedFile.ContentLength;     
                byte[] imgArray = new byte[fileLen];     
                fu.PostedFile.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    
                {     
                }     
                br.Close();     
                ms.Close();     
                foreach (FileExtension fe in fileEx)     
                {     
                    if (Int32.Parse(fileclass) == (int)fe)     
                        return true;     
                }     
                return false;     
            }     
        }     
    }    
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:92805次
    • 积分:1472
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:49篇
    • 译文:0篇
    • 评论:3条
    文章分类
    最新评论