判断文件真实后缀

#region 检测上传真实类型与后缀名是否匹配,是否在允许列表中,允许则上传返回上传路径
        public bool IsAllowedExtension(HttpPostedFile hifile,out string upfilepath)
        {
            bool ret = false;
            upfilepath = string.Empty;
            string UFileName = hifile.FileName.Trim();//获取文件名
            string WebPath = HttpContext.Current.Request.ApplicationPath + "UpLoadFile/FILE/" + System.DateTime.Today.Year.ToString() + "/" + System.DateTime.Today.Month.ToString() + "/"; ;//上传到指定路径
            string Exten = Path.GetExtension(hifile.FileName).ToUpper();//获取文件的扩展名
            int FileLength = hifile.ContentLength;//文件大小
            string FileType = hifile.ContentType.ToUpper();//获取文件的类型

            //int   fileLengh   =   hifile.ContentLength;
            //byte[] fileByte = new byte[fileLengh];
            //Stream   fileStream   =   hifile.InputStream;//建立文件流对象
            ////fileStream.Read(fileByte, 0, fileLengh);
            //fileStream.Read(fileByte, 0, 1);
            //fileStream.Read(fileByte, 1, 1);
            //string fileCode = fileByte[0].ToString() + fileByte[1].ToString();

            string fileCode = hifile.InputStream.ReadByte().ToString() + hifile.InputStream.ReadByte().ToString();//文件真实类型代码
            if (fileCode != GetFileType(Exten))//判断后缀名返回的代码是否与文件真实类型匹配
            {
                return false;
            }

            String[] fileType = { "255216", "7173", "6677", "13780", "8297", "8075", "208207" };//允许上传列表
            for (int i = 0; i < fileType.Length; i++)
            {
                if (fileCode == fileType[i])
                {
                    ret = true;
                    break;
                }
            }
            if (ret == false) return ret;

            if (!Directory.Exists(WebPath))
            {
                Directory.CreateDirectory(WebPath);
            }
            string UploadFileName = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Millisecond.ToString() + Exten;
            upfilepath = WebPath + UploadFileName;
            hifile.SaveAs(upfilepath);

            //System.IO.FileStream fs = new System.IO.FileStream(upfilepath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            //System.IO.BinaryReader r = new System.IO.BinaryReader(fs);
            //string fileclass = "";
            //byte buffer;
            //try
            //{
            //    buffer = r.ReadByte();
            //    fileclass = buffer.ToString();
            //    buffer = r.ReadByte();
            //    fileclass += buffer.ToString();
            //}
            //catch
            //{
            //    return false;
            //}
            //r.Close();
            //fs.Close();

            //if (fileclass != GetFileType(Exten))
            //{
            //    File.Delete(WebPath + UploadFileName);
            //    ret = false;
            //}
            //else
            //{
            //    upfilepath = WebPath + UploadFileName;
            //    ret = true;
            //}

            return ret;
        }

        /*文件扩展名说明
             *7173        gif
             *255216      jpg
             *13780       png
             *6677        bmp
             *239187      txt,aspx,asp,sql
             *208207      xls.doc.ppt
             *6063        xml
             *6033        htm,html
             *4742        js
             *8075        xlsx,zip,pptx,mmap,zip
             *8297        rar
             *01          accdb,mdb
             *7790        exe,dll
             *5666        psd
             *255254      rdp
             *10056       bt种子
             *64101       bat
*/
        private string GetFileType(string fileExtenstion)
        {
            string code =string.Empty;
            switch (fileExtenstion)
            {
                case ".GIF":
                    code = "7173";
                    break;
                case ".JPG":
                    code = "255216";
                    break;
                case ".XLS":
                    code = "208207";
                    break;
                default:
                    break;
            }
            return code;
        }
        #endregion 

时间: 2024-10-08 19:30:58

判断文件真实后缀的相关文章

【Java】判断文件的后缀名

这本来不是一个问题,利用框架本来有的方法,或者File类的getPath()方法,取出要判断文件路径,或者getName()方法取出文件路径,成为一个String字符串假设为fileName之后,再对带哦用这fileName的endsWith("txt")方法,得到的布尔值就能判断其是否txt文件.这本来没什么好说,但会出现什么呢?比如要判断是否为图片文件,尤其是一些上传系统中,你的判断条件就要写成如下的形式: if (fileName.endsWith(".jpg"

java判断文件真实类型

代码如下: import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; /** * <p> * 类描述:获取和判断文件头信息 * |--文件头是位于文件开头的一段承担一定任务的数据,一般都在开头的部分. * |--头文件作为一种包含功能函数.数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation). * |--

c# 根据文件流查看文件真实格式

今天在做图片注册的功能的时候,测试提出一个问题:将随便一个非图片文件将后缀名改为jpg或其他,上传时应检验图片合法性.然后同事给提供了根据文件流前两个字节判断文件真实格式的思路,代码如下: public static FileExtension CheckFileType(string fileName) { FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read); System.IO.BinaryRead

C#根据文件流判断文件类型

判断文件真实的类型,不是通过扩展名来判断: /// <summary> /// 判断文件格式 /// http://www.cnblogs.com/babycool /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static bool IsAllowedExtension(string filePa

C# 根据文件流byte[]数组前两位 判断文件类型 附 文件扩展名说明

判断文件真实的类型,不是通过扩展名来判断:而是通过byte[]数组前两位编码来判断, 原文连接 https://www.cnblogs.com/Percy_Lee/p/4980451.html /// <summary> /// 判断文件格式 /// http://www.cnblogs.com/babycool /// </summary> /// <param name="filePath"></param> /// <retu

C#判断文件和文件夹是否存在 不存在则创建

using System.IO;string path = @"D:\accountDaoRu\";        if (Directory.Exists(path) == false)        {            Directory.CreateDirectory(path);        } if (Directory.Exists(Server.MapPath(~/upimg/hufu)) == false)//如果不存在就创建file文件夹{ Directory

Excel公式 提取文件路径后缀

我们在代码中获取一个文件路径的后缀,是一个很简单的事. 如C#中,可以通过new FileInfo(filePath).Extension,或者Path.GetExtension(filePath)获取. 而Excel的大数据中,直接批量获取同行单元格内容中文件路径的后缀,该如何获取? 如上,想获取文件后缀,然后从中分析出文件的所属开发语言. 公式如下: 1.获取后缀 =RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".",&quo

JavaScript根据文件名判断文件类型

//JavaScript根据文件名判断文件类型 var imgExt = new Array(".png",".jpg",".jpeg",".bmp",".gif");//图片文件的后缀名 var docExt = new Array(".doc",".docx");//word文件的后缀名 var xlsExt = new Array(".xls"

利用文件头判断文件类型

上传文件时经常需要做文件类型判断,例如图片.文档等,普通做法是直接判断文件后缀名,而文艺青年为了防止各种攻击同时也会加上使用文件头信息判断文件类型. 原理很简单:用文件头判断,直接读取文件的前2个字节即可. 1 public class FileUtil { 2 /** 3 * byte数组转换成16进制字符串 4 * 5 * @param src 6 * @return 7 */ 8 private static String bytesToHexString(byte[] src) { 9