+ -
当前位置:首页 → 问答吧 → 上传文件判断类型的问题

上传文件判断类型的问题

时间:2011-12-15

来源:互联网

C# code

public enum FileExtension
        {
            JPG = 255216,
            GIF = 7173,
            PNG = 13780,
            SWF = 6787,
            RAR = 8297,
            ZIP = 8075,
            _7Z = 55122,
            BMP=6677,
            EXE=7790,
            XML=6063,
            HTML=6033,
            ASPX=239187,
            CS=117115,
            JS=119105,
            TXT=102100

        }
        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
            {
            }
            br.Close();
            ms.Close();
            foreach (FileExtension fe in fileEx)
            {
                if (Int32.Parse(fileclass) == (int)fe)
                    return true;
            }
            return false;
        }


上面是定义,下面是调用
C# code

 if (postedfile != null)
                {
                    if (!Tools.Verification.IsAllowedExtension(postedfile, fe))
                    {
                        if (target != "")
                        {
                            if (System.IO.File.Exists(HttpContext.Current.Server.MapPath(target)))
                            {
                                System.IO.File.Delete(HttpContext.Current.Server.MapPath(target));
                                err = "文件非法!!!";
                            }
                        }
                    }
                }



下面调用 的代码,我一开始放在获取文件流之后立即判断,但发现存入服务器之后图片坏了
于是又改成了存入服务器之后再判断,可是图片还是坏了
但是把下面这段代码注释掉之后图片又正常了,这到底啥意思?

作者: z1101385391   发布时间: 2011-12-15

顶一下

作者: z1101385391   发布时间: 2011-12-15

怎么没人回答啊

作者: z1101385391   发布时间: 2011-12-15

晕这样写是不是太复杂了点??
System.IO.Path.GetExtension这样就可以读取扩展名
HttpPostedFile.ContentType这样就可以获取MIME类型

扩展名与MIME类型是有对应关系的。。。
MIME类型是唯一的,所以可以建一个键值集合,很容易就搞定了。


作者: chromeV8   发布时间: 2011-12-15

引用 3 楼 chromev8 的回复:

晕这样写是不是太复杂了点??
System.IO.Path.GetExtension这样就可以读取扩展名
HttpPostedFile.ContentType这样就可以获取MIME类型

扩展名与MIME类型是有对应关系的。。。
MIME类型是唯一的,所以可以建一个键值集合,很容易就搞定了。

第一个不说了,逃过去很容易
第二个,ContentType可以在注册表里面改

作者: z1101385391   发布时间: 2011-12-15

好像contenttype改不了···唉···郁闷···

作者: z1101385391   发布时间: 2011-12-15