服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

ASP.NET在上传文件时对文件类型的高级判断的代码

2019-06-28 14:00服务器之家 ASP.NET教程

在上传文件过程中,可以通过修改扩展名来逃过文件类型的判断并实现上传,就需要可以验证究竟是什么文件。下面的代码大家可以测试下。

代码如下:

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 

public partial class _Default : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 



protected void bt_upload_Click(object sender, EventArgs e) 

try 

if (FileUpload1.PostedFile.FileName == "") 

this.lb_info.Text = "请选择文件!"; 

else 

string filepath = FileUpload1.PostedFile.FileName; 
if (IsAllowedExtension(FileUpload1) == true) 

string filename = filepath.Substring(filepath.LastIndexOf("\\") + 1); 
string serverpath = Server.MapPath("images/") + filename; 
FileUpload1.PostedFile.SaveAs(serverpath); 
this.lb_info.Text = "上传成功!"; 

else 

this.lb_info.Text = "请上传图片"; 



catch (Exception error) 

this.lb_info.Text = "上传发生错误!原因:" + error.ToString(); 


public static bool IsAllowedExtension(FileUpload hifile) 

System.IO.FileStream fs = new System.IO.FileStream(hifile.PostedFile.FileName, 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 



r.Close(); 
fs.Close(); 
if (fileclass == "255216" || fileclass == "7173")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar 

return true; 

else 

return false; 



测试通过....

延伸 · 阅读

精彩推荐