学习, And 整理了一下.
(一). 示例图片

(二). 示例代码
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

/**//// 16
/// 添加一个上传文件控件17
/// 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

/**//// 32
/// 读取缓存中存储的上传文件控件集33
/// 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

/**//// 52
/// 保存当前页面上传文件控件集到缓存中53
/// 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

/**//// 81
/// 上传文件操作82
/// 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 +"/"" );
97
} 98
} 99
catch100

{101
Response.Write("上传文件: /"" + userPostedFile.FileName +"/"出错!");102
} 103
}104
if (Session["FilesControls"] != null)105

{106
Session.Remove("FilesControls");107
}108
} 109
}
(三). 改变上传文件大小和时间限制
executionTimeout="110" //允许上传文件最大等待时间
maxRequestLength="4096" //上传文件大小,默认为4M
上传文件大小是由上面两个参数所决定的. 涉及到安全因素,最好不要设得太大.
(四). 示例源代码下载
http://www.cnblogs.com/Files/ChengKing/UpMultiFileControl.rar
(五).控件缺点
由于安全原因, 用服务端控件实现,回发时选择的文件不能够保存.
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=699244
本文介绍了一个自定义的多文件上传控件的实现方法,包括添加上传控件、保存和读取上传文件控件集及上传文件的具体操作。同时讨论了如何设置ASP.NET应用程序的文件上传大小和时间限制。
1374

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



