ASPNET中FileUpload文件上传控件应用实例.docx
《ASPNET中FileUpload文件上传控件应用实例.docx》由会员分享,可在线阅读,更多相关《ASPNET中FileUpload文件上传控件应用实例.docx(4页珍藏版)》请在冰豆网上搜索。
ASPNET中FileUpload文件上传控件应用实例
ASP.NET中FileUpload文件上传控件应用实例_
用法FileUpload控件,可以为用户供应一种将文件从用户的计算机发送到服务器的方法。
该控件在允许用户上载图片、文本文件或其他文件时很有用。
要上载的文件将在回发期间作为扫瞄器恳求的一部分提交给服务器。
在文件上载完毕后,您可以用代码管理该文件。
大致了解了一下FileUpload,让我们来看一下FileUpload几个实际应用中问题的处理方法。
1.一次上传多个文件
要一次上传多个文件,我们可以像传单个文件那样对每个文件单独进行处理,除此之外,我们还可以用法HttpFileCollection类捕获从Request对象发送来的全部文件,然后再单独对每个文件进行处理,代码如下:
代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
stringfilepath=Server.MapPath("upload")+"\\";
HttpFileCollectionuploadFiles=Request.Files;
for(inti=0;iuploadFiles.Count;i++)
{
HttpPostedFilepostedFile=uploadFiles[i];
try
{
if(postedFile.ContentLength0)
{
Label1.Text+="文件#"+(i+1)+":
"+System.IO.Path.GetFileName(postedFile.FileName)+"br/";
postedFile.SaveAs(filepath+System.IO.Path.GetFileName(postedFile.FileName));
}
}
catch(ExceptionEx)
{
Label1.Text+="发生错误:
"+Ex.Message;
}
}
}
2.上传文件类型的验证
对上传文件类型的验证既可以在客户端进行,也可以在服务器端进行。
客户端可以用法验证控件来进行,不过我们今日主要说说如何在服务器端进行验证。
上边cs文件中已经用GetExtension猎取了文件的扩展名,只要稍加推断即可实现上传类型的验证:
代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(FileUpload1.HasFile)
{
fileExt=System.IO.Path.GetExtension(FileUpload1.FileName);
if(fileExt==".rar"||fileExt==".zip")
{
try
{
FileUpload1.SaveAs(Server.MapPath("upload")+"\\"+FileUpload1.FileName);
Label1.Text="客户端路径:
"+FileUpload1.PostedFile.FileName+"br"+
"文件名:
"+System.IO.Path.GetFileName(FileUpload1.FileName)+"br"+
"文件扩展名:
"+System.IO.Path.GetExtension(FileUpload1.FileName)+"br"+
"文件大小:
"+FileUpload1.PostedFile.ContentLength+"KBbr"+
"文件MIME类型:
"+FileUpload1.PostedFile.ContentType+"br"+
"保存路径:
"+Server.MapPath("upload")+"\\"+FileUpload1.FileName;
}
catch(Exceptionex)
{
Label1.Text="发生错误:
"+ex.Message.ToString();
}
}
else
{
Label1.Text="只允许上传rar、zip文件!
";
}
}
else
{
Label1.Text="没有选择要上传的文件!
";
}
}
需要留意的是,我们不能过分依靠于客户端验证控件和服务器端上述方法的验证,由于用户只需将文件扩展名更改为允许的类型就可以避开上边的验证,这对用户来说并不是件困难的事情。
3.解决文件大小限制
在ASP.NET2.0中FileUpload默认上传文件最大为4M,不过我们可以在web.cofig中修改相关节点来更改这个默认值,相关节点如下:
代码如下:
system.web
httpRuntimemaxRequestLength="40690"executionTimeout="6000"/
/system.web
maxRequestLength表示可上传文件的最大值,executionTimeout表示ASP.NET关闭前允许发生的上载秒数。
4."multipart/form-data"和Request共存
在ASP程序中一旦用法表单上传文件(form的enctype属性值为multipart/form-data),服务器端就不能再用Request.Form来猎取表单的值,这种限制在ASP.NET2.0中已经不存在了:
代码如下:
protectedvoidButton1_Click(objectsender,EventArgse)
{
if(FileUpload1.HasFile)
{
try
{
FileUpload1.SaveAs(Server.MapPath("upload")+"\\"+FileUpload1.FileName);
Label1.Text="上传文件:
"+FileUpload1.FileName+"br"+
"说明:
"+Request.Form["TextBox1"];//也可以用"TextBox1.Text"来猎取说明
}
catch(Exceptionex)
{
Label1.Text="发生错误:
"+ex.Message.ToString();
}
}
else
{
Label1.Text="没有选择要上传的文件!
";
}
}
应用范例
Default.aspx:
%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%
!
DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""l1/DTD/xhtml1-transitional.dtd"
htmlxmlns="l"
headrunat="server"
title无标题页/title
/head
body
formid="form1"runat="server"
asp:
FileUploadID="FileUpload1"runat="server"/
asp:
ButtonID="Button1"runat="server"OnClick="Button1_Click"Text="Button"/
asp:
RegularExpressionValidatorID="RegularExpressionValidator1"runat="server"ControlToValidate="FileUpload1"
ErrorMessage="必需是jpg或者gif文件"ValidationExpression="^(([a-zA-Z]:
)|(\\{2}\W+)\$?
)(\\(\W[\W].*))+(.jpg|.Jpg|.gif|.Gif)$"/asp:
RegularExpressionValidator
/form
/body
/html
Default.aspx.cs:
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
publicpartialclass_Default:
System.Web.UI.Page
{
protectedvoidPage_Load(objectsender,EventArgse)
{
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
StringsavePath=@"F:
\111\";
if(FileUpload1.HasFile)
{
Stringfilename;
filename=FileUpload1.FileName;
savePath+=filename;
FileUpload1.SaveAs(savePath);
Page.Response.Write(FileUpload1.PostedFile.ContentType+FileUpload1.PostedFile.ContentLength+"br");
Page.Response.Write("imgsrc='"+savePath+"'");
}
else
{
Page.Response.Write("fff");
}
}
}
该范例应用RegularExpressionValidator控件限制只能上传jpg、Jpg、gif、Gif格式的文件,当然最好后台也做一下限制,上面已经讲解过具体的操作方法。
...