学习, And 整理了一下.
(一). 示例图片
(二). 示例代码
1
public partial class UpMultiFileControl2 : System.Web.UI.UserControl2
{3
protected void Page_Load(object sender, EventArgs e)4
{5
if (!Page.IsPostBack)6
{7
SaveCurrentPageFileControls();8
}9
}10
protected void btAddFile_Click(object sender, EventArgs e)11
{12
AddOneFileControl();13
}14
15
/**//// <summary>16
/// 添加一个上传文件控件17
/// </summary>18
private void AddOneFileControl()19
{20
ArrayList al = new ArrayList();21
this.tbFiles.Rows.Clear();22
GetFileControlsFromSession();23
HtmlTableRow htr = new HtmlTableRow();24
HtmlTableCell htc = new HtmlTableCell();25
htc.Controls.Add(new FileUpload());26
htr.Controls.Add(htc);27
this.tbFiles.Rows.Add(htr);28
SaveCurrentPageFileControls();29
}30
31
/**//// <summary>32
/// 读取缓存中存储的上传文件控件集33
/// </summary>34
private void GetFileControlsFromSession()35
{36
ArrayList al = new ArrayList();37
if (Session["FilesControls"] != null)38
{39
al = (System.Collections.ArrayList)Session["FilesControls"];40
for (int i = 0; i < al.Count; i++)41
{42
HtmlTableRow htr1 = new HtmlTableRow();43
HtmlTableCell htc1 = new HtmlTableCell();44
htc1.Controls.Add((System.Web.UI.WebControls.FileUpload)al[i]);45
htr1.Controls.Add(htc1);46
this.tbFiles.Rows.Add(htr1);47
}48
}49
}50
51
/**//// <summary>52
/// 保存当前页面上传文件控件集到缓存中53
/// </summary>54
private void SaveCurrentPageFileControls()55
{56
ArrayList al = new ArrayList();57
foreach (Control controlTR in this.tbFiles.Controls)58
{59
if (controlTR.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")60
{61
HtmlTableCell htc = (HtmlTableCell)controlTR.Controls[0];62
foreach (Control controlFileUpload in htc.Controls)63
{64
if (controlFileUpload.GetType().ToString() == "System.Web.UI.WebControls.FileUpload")65
{66
FileUpload tempFileUpload = (FileUpload)controlFileUpload;67
al.Add(tempFileUpload);68
}69
}70
}71
}72
Session.Add("FilesControls", al);73
}74
75
protected void btUpFiles_Click(object sender, EventArgs e)76
{77
UpLoadFiles();78
}79
80
/**//// <summary>81
/// 上传文件操作82
/// </summary>83
private void UpLoadFiles()84
{85
string filepath = Server.MapPath("./")+"UploadFiles";86
87
HttpFileCollection uploadedFiles = Request.Files;88
for (int i = 0; i < uploadedFiles.Count; i++)89
{90
HttpPostedFile userPostedFile = uploadedFiles[i];91
try92
{93
if (userPostedFile.ContentLength > 0 )94
{95
userPostedFile.SaveAs(filepath + "\\" + System.IO.Path.GetFileName(userPostedFile.FileName));96
Response.Write("已上传文件: \"" + filepath +"\\"+ userPostedFile.FileName +"\"<br><br>" );97
}98
}99
catch100
{101
Response.Write("上传文件: \"" + userPostedFile.FileName +"\"出错!");102
}103
}104
if (Session["FilesControls"] != null)105
{106
Session.Remove("FilesControls");107
}108
}109
}(三). 改变上传文件大小和时间限制
<httpRuntime>
executionTimeout="110" //上传等待时间
maxRequestLength="4096" //上传文件大小,默认为4M
</httpRuntime>
上传文件大小是由上面两个参数所决定的. 涉及到安全因素,不要设得太大.