ASP.NET限制上传文件类型

 

文章转载自:   如何有效的限制上传文件类型    http://www.studyofnet.com/news/8.html

 

一、非常不安全的限制文件类型的方法,只能从表面上进行限制:

 

//限制文件后缀名:

if(Path.GetExtension(sFilePath) != ".zip")
{ 
  Label2.Text = "本应用程序只允许上传zip格式的文件,请重新选择!";
 
  Return;
}


这时如果上传后缀名不是zip的文件,就会发现文件无法上传了。不过,这并表示我们就不能把上传其他格式的文件了。其实,如果在上传前,事先把文件后缀名改成zip,上面这段代码就失去作用了。这时如果上传后缀名不是zip的文件,就会发现文件无法上传了。不过,这并表示我们就不能把上传其他格式的文件了。其实,如果在上传前,事先把文件后缀名改成zip,上面这段代码就失去作用了。

 

二、判断客户端发送的文件的 MIME (注一)内容类型,来进行限制,不过这个MIME也是可以修改的,而且每个浏览器对于不同的文件的MIME或许有差异,不好控制:

 

//通过文章的MIME信息进行限制:

if(File1.PostedFile.ContentType != "application/zip")
{
  Label2.Text = "本应用程序只允许上传zip格式的文件,请重新选择!";
    return;
}

 

三、根据文件类型的编码来进行限制,能很好的对上传的文件类型进行限制,个人推荐使用这种方式:

 

//例如:限制图片类型,其中:jpg,jpeg,gif,bmp,png
//分别的类型编码为: 255216,7173,6677,13780
//byte[] file: 上传的文件集合
//byte[] strExtensionValue: 限制的文件类型编码集

public static bool IsAllowedUpfileType(byte[] fileList,string strValue)
{
            bool bReturn = false;
            string fileclass = "";
            byte buffer;
            try
            {
                buffer = file[0];
                fileclass = buffer.ToString();
                buffer = file[1];
                fileclass += buffer.ToString();
            }
            catch { }
            string[] allowedExtensions = strExtensionValue.Split(',');
            for (int i = 0; i < allowedExtensions.Length; i++)
            {
                if (fileclass == allowedExtensions[i])
                {
                    bReturn = true;
                    break;
                }
            }
            return bReturn;
}

//调用:
byte[] file = new Byte[FileData.ContentLength];
Stream fsRead = FileData.InputStream;
fsRead.Read(file, 0, FileData.ContentLength);

bool bIsAllowed= IsAllowedUpfileType(file, "255216,7173,6677,13780");
fsRead.Flush();
fsRead.Close();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值