页面元素:FileUpLoad控件、Button控件、Label控件。
步骤:
(1)首次打开页面调用SFUPC()方法:每执行一次就向缓存中添加一个FileUpLoad控件,代码如下:
Protected void Page_Load(Object sender,EventArgs e)
...{
if(!Page.IsPostBack)
...{
SFUPC();
}
}(2)触发“上传文件”的Click事件,调用UpFile()方法执行文件上传操作,代码如下:
Protected void Button1_Click(Object sender,EventArgs e)
...{
UpFile();
}(3)触发“添加文件”的Click事件,调用Insert()方法执行添加上传控件的操作,代码如下:
Protected void Button2_Click(Object sender,EventArgs e)
...{
InsertC();
}(4)SFUPC()方法:主要是保存当前页面上传文件控件集到缓存中。
private void SFUPC()//该方法用于保存当前页面上传文件控件集到缓存中
...{
ArrayList AL = new ArrayList();//创建动态增加数组
foreach (Control C in F.Controls)
...{
if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
...{
HtmlTableCell HTC = (HtmlTableCell)C.Controls[0];
foreach (Control FUC in HTC.Controls)
...{
if (FUC.GetType().ToString() == "System.Web.UI.WebControls.FileUpload")
...{
FileUpload FU = (FileUpload)FUC;
AL.Add(FU);
}
}
}
}
Session.Add("FilesControls", AL);
}(5)定义一个InsertC():用于添加一个上传文件的控件。
private void InsertC()//该方法用于添加一个上传文件的控件
...{
ArrayList AL = new ArrayList();
this.F.Rows.Clear();
GetInfo();
HtmlTableRow HTR = new HtmlTableRow();
HtmlTableCell HTC = new HtmlTableCell();
HTC.Controls.Add(new FileUpload());
HTR.Controls.Add(HTC);
F.Rows.Add(HTR);
SFUPC();
}(6)定义GetInfo()方法,用于读取缓存中存储的上传文件控件集。
private void GetInfo()//该方法用于读取缓存中存储的上传文件控件集
...{
ArrayList AL = new ArrayList();
if (Session["FilesControls"] != null)
...{
AL = (System.Collections.ArrayList)Session["FilesControls"];
for (int i = 0; i < AL.Count; i++)
...{
HtmlTableRow HTR = new HtmlTableRow();
HtmlTableCell HTC = new HtmlTableCell();
HTC.Controls.Add((System.Web.UI.WebControls.FileUpload)AL[i]);
HTR.Controls.Add(HTC);
F.Rows.Add(HTR);
}
}
}(7)定义UpFile()方法,用于执行文件上传操作。
private void UpFile()//该方法用于执行文件上传操作
...{
string FilePath = Server.MapPath("./") + "File";
HttpFileCollection HFC = Request.Files;
for (int i = 0; i < HFC.Count; i++)
...{
HttpPostedFile UserHPF = HFC[i];
try
...{
if (UserHPF.ContentLength > 0)
...{
UserHPF.SaveAs(FilePath + "/" + System.IO.Path.GetFileName(UserHPF.FileName));
}
}
catch
...{
Label1.Text = "处理出错!";
}
}
if (Session["FilesControls"] != null)
...{
Session.Remove("FilesControls");
}
Label1.Text = "上传成功!";
}
本文介绍了一个ASP.NET应用程序中实现多文件上传的方法。通过使用FileUpload控件,并结合Button控件触发文件上传和添加新的上传控件,实现了动态管理文件上传的功能。此外,还介绍了如何将上传控件的状态保存在Session中,以便页面刷新后能够恢复上传状态。
420

被折叠的 条评论
为什么被折叠?



