上传文件检测真实类型

#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 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控件UpdloadFile文件上传eg: string newfilename = file_uploadid.FileName; string size = file_uploadid.PostedFile.ContentLength.ToString(); string type = file_uploadid.PostedFile.ContentType; string type2 = newfilename.Substring(newfilename.LastIndexOf(".") + 1); string path = ""; try { if (file_uploadid.PostedFile != null && file_uploadid.PostedFile.FileName != "") { string hzm = System.IO.Path.GetExtension(file_uploadid.PostedFile.FileName);//后缀名 如 .doc string[] a = { ".txt", ".jpg", ".jpeg", ".gif", ".png", ".docx", ".doc", ".xlsx", ".xls", ".rar", ".zip", ".pdf" };//设定好了的格式 if (!a.Contains(hzm)) { Response.Write("文件格式不正确"); } else { int defaulsize = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["filesize"]);//取得设置的默认文件的大小 int filesize = (file_uploadid.PostedFile.ContentLength) / 1024; //取得上传的文件的大小,单位为bytes if (filesize < defaulsize) { #region 对文件进行操作 newfilename = DateTime.Now.ToString("yyyyMMddHHmmssfff") + hzm;//文件的新名字 如20120711105734222.doc path = System.Web.HttpContext.Current.Server.MapPath("~/UploadFile//");//文件保存的路径 if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } #endregion } else { //超过了文件的大小 Response.Write("上传的文件超过了3000M,请重新选择 "); } } } } catch (Exception) { Response.Write("文件格式不正确"); } #endregion if (newfilename != "") { file_uploadid.SaveAs(path + newfilename); //保存文件 }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值