• C# 判断文件的真实格式


    为了防止图片木马,通过后缀判断文件的格式是不准确的。可以通过这种方式进行判断。

            static void Main(string[] args)
            {
                string path = @"C:UsersRenJunDesktop课程回顾测试内容PPT4.jpg";
                System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
                string bx = " ";
                byte buffer;
                try
                {
                    buffer = r.ReadByte();
                    bx = buffer.ToString();
                    buffer = r.ReadByte();
                    bx += buffer.ToString();
                }
                catch (Exception exc)
                {
                    Console.WriteLine(exc.Message);
                }
                r.Close();
                fs.Close();
                //真实的文件类型
                Console.WriteLine(bx);
                //文件名,包括格式
                Console.WriteLine(System.IO.Path.GetFileName(path));
                //文件名, 不包括格式
                Console.WriteLine(System.IO.Path.GetFileNameWithoutExtension(path));
                //文件格式
                Console.WriteLine(System.IO.Path.GetExtension(path));
                Console.ReadLine();
            }
    

    通过上面的方法,可以获取到选定文件的格式编码,然后在根据文件格式编码就可以知道这个文件是否是想要的真实格式了。

    比如说jpg格式的编码是255216,则该图片真实格式为jpg

        public enum FileExtension
        {
            JPG = 255216,
            GIF = 7173,
            BMP = 6677,
            PNG = 13780,
            COM = 7790,
            EXE = 7790,
            DLL = 7790,
            RAR = 8297,
            ZIP = 8075,
            XML = 6063,
            HTML = 6033,
            ASPX = 239187,
            CS = 117115,
            JS = 119105,
            TXT = 210187,
            SQL = 255254,
            BAT = 64101,
            BTSEED = 10056,
            RDP = 255254,
            PSD = 5666,
            PDF = 3780,
            CHM = 7384,
            LOG = 70105,
            REG = 8269,
            HLP = 6395,
            DOC = 208207,
            XLS = 208207,
            DOCX = 208207,
            XLSX = 208207,
        }
    

    参考:http://blog.163.com/china__xuhua/blog/static/199723169201111161478889/

  • 相关阅读:
    project euler 开坑
    hdu 5382 GCD?LCM!
    Leetcode 557. 反转字符串中的单词 III
    Leetcode 344. 反转字符串
    Leetcode 345. 反转字符串中的元音字母
    008.C++类改写模板类
    007.C++构造函数
    006.C++头文件
    02.树的序列化与反序列化(C++)
    Leetcode 94. 二叉树的中序遍历
  • 原文地址:https://www.cnblogs.com/grj1046/p/4648513.html
Copyright © 2020-2023  润新知