ASP.NET上传文件对文件类型的高级判断

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.IO;

public   partial   class  niunantest : System.Web.UI.Page
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {

    }
    
protected   void  Button1_Click( object  sender, EventArgs e)
    {
        
string  str  =  FileUpload1.PostedFile.ContentType;
        Response.Write(
" 文件类型: " + str);

        
string  filename  =   "" ;

        FileExtension[] fe 
=  { FileExtension.GIF, FileExtension.JPG, FileExtension.PNG };
        
if  (FileValidation.IsAllowedExtension(FileUpload1, fe))
        {
            
string  fileExt  =  System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
            Response.Write(
" <br>验证通过! " );
            
// filename = "/Images/" + DateTime.Now.ToString("yyyyMMddHHmmss") + fileExt;
            
// FileUpload1.PostedFile.SaveAs(Server.MapPath(filename));
        }
        
else
        {
            Response.Write( 
" <br>验证不通过,只支持以下格式的图片:JPG,GIF,PNG " );
            
return ;
        }

    }

    
public   enum  FileExtension
    {
        JPG 
=   255216 ,
        GIF 
=   7173 ,
        PNG 
=   13780 ,
        SWF 
=   6787 ,
        RAR 
=   8297 ,
        ZIP 
=   8075 ,
        _7Z 
=   55122

        
//  255216 jpg;

        
//  7173 gif;

        
//  6677 bmp,

        
//  13780 png;

        
//  6787 swf

        
//  7790 exe dll,

        
//  8297 rar

        
//  8075 zip

        
//  55122 7z

        
//  6063 xml

        
//  6033 html

        
//  239187 aspx

        
//  117115 cs

        
//  119105 js

        
//  102100 txt

        
//  255254 sql 

    }

    
public   class  FileValidation
    {
        
public   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 ;
        }
    }
}
 
测试通过....
第一次发错了,不好意思,更正了代码.

 

转载于:https://www.cnblogs.com/ITniao/archive/2009/12/20/1628417.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值