上传文件类型验证,防止伪造文件上传

//验证类
using System;    
  using System.Collections.Generic;    
  using System.Web.UI.WebControls;    
  using System.IO;    
  namespace FileValidation    
 {    
          public  enum FileExtension    
         {    
                 JPG =  255216,    
                 GIF =  7173,    
                 BMP =  6677,    
                 PNG =  13780 
                  //  208207 doc
                 
//  8075 docx
                 
//  208207 xls
                 
//  8075 xlsx
                 
//  7368 mp3
                 
//  4838 wma
                 
//  7784 mid
                 
//  255216 jpg;    
                 
//  7173 gif;    
                 
//  6677 bmp,    
                 
//  13780 png;    
                 
//  7790 exe dll,    
                 
//  8297 rar    
                 
//  6063 xml    
                 
//  6033 html    
                 
//  239187 aspx    
                 
//  117115 cs    
                 
//  119105 js    
                 
//  210187 txt    
                 
// 255254 sql    
                 
//  6787 swf   
                 
//  8075 zip   
                 
//  55122 7z   
 
         }    
          public  class FileValidation    
         {    
  static  bool IsAllowedExtension()  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;    
                 }    
         }    
 } 

 

 1  protected  void Button1_Click( object sender, EventArgs e)
 2     {
 3          string filename =  "";
 4         Boolean fileOK =  false;
 5          if (FileUpload1.HasFile)
 6         {
 7             String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
 8             String[] allowedExtensions = {  " .gif "" .png "" .jpeg "" .jpg " };
 9              for ( int i =  0; i < allowedExtensions.Length; i++)
10             {
11                  if (fileExtension == allowedExtensions[i])
12                 {
13                     fileOK =  true;
14                 }
15             }
16         }
17 
18         FileExtension[] fe = { FileExtension.BMP, FileExtension.GIF, FileExtension.JPG, FileExtension.PNG };
19          if (fileOK && FileValidation.IsAllowedExtension(FileUpload1, fe))
20         {
21              string fileExt = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
22             filename =  " Images/ " + DateTime.Now.ToString( " yyyyMMddHHmmss ") + fileExt;
23             FileUpload1.PostedFile.SaveAs(Server.MapPath(filename));
24         }
25          else
26         {
27             Response.Write( " <script>alert('只支持以下格式的图片\\rJPG,BMP,GIF,PNG!');</script> ");
28              return;
29         }
30 
31     }
32 }

转载于:https://www.cnblogs.com/glt3260053/archive/2012/06/06/2537929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值