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

(二). 示例代码
1
public
partial
class
UpMultiFileControl2:System.Web.UI.UserControl
2
{
3
protectedvoidPage_Load(objectsender,EventArgse)
4

{
5
if(!Page.IsPostBack)
6

{
7
SaveCurrentPageFileControls();
8
}
9
}
10
protectedvoidbtAddFile_Click(objectsender,EventArgse)
11

{
12
AddOneFileControl();
13
}
14
15
/**////<summary>
16
///添加一个上传文件控件
17
///</summary>
18
privatevoidAddOneFileControl()
19

{
20
ArrayListal=newArrayList();
21
this.tbFiles.Rows.Clear();
22
GetFileControlsFromSession();
23
HtmlTableRowhtr=newHtmlTableRow();
24
HtmlTableCellhtc=newHtmlTableCell();
25
htc.Controls.Add(newFileUpload());
26
htr.Controls.Add(htc);
27
this.tbFiles.Rows.Add(htr);
28
SaveCurrentPageFileControls();
29
}
30
31
/**////<summary>
32
///读取缓存中存储的上传文件控件集
33
///</summary>
34
privatevoidGetFileControlsFromSession()
35

{
36
ArrayListal=newArrayList();
37
if(Session["FilesControls"]!=null)
38

{
39
al=(System.Collections.ArrayList)Session["FilesControls"];
40
for(inti=0;i<al.Count;i++)
41

{
42
HtmlTableRowhtr1=newHtmlTableRow();
43
HtmlTableCellhtc1=newHtmlTableCell();
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
privatevoidSaveCurrentPageFileControls()
55

{
56
ArrayListal=newArrayList();
57
foreach(ControlcontrolTRinthis.tbFiles.Controls)
58

{
59
if(controlTR.GetType().ToString()=="System.Web.UI.HtmlControls.HtmlTableRow")
60

{
61
HtmlTableCellhtc=(HtmlTableCell)controlTR.Controls[0];
62
foreach(ControlcontrolFileUploadinhtc.Controls)
63

{
64
if(controlFileUpload.GetType().ToString()=="System.Web.UI.WebControls.FileUpload")
65

{
66
FileUploadtempFileUpload=(FileUpload)controlFileUpload;
67
al.Add(tempFileUpload);
68
}
69
}
70
}
71
}
72
Session.Add("FilesControls",al);
73
}
74
75
protectedvoidbtUpFiles_Click(objectsender,EventArgse)
76

{
77
UpLoadFiles();
78
}
79
80
/**////<summary>
81
///上传文件操作
82
///</summary>
83
privatevoidUpLoadFiles()
84

{
85
stringfilepath=Server.MapPath("./")+"UploadFiles";
86
87
HttpFileCollectionuploadedFiles=Request.Files;
88
for(inti=0;i<uploadedFiles.Count;i++)
89

{
90
HttpPostedFileuserPostedFile=uploadedFiles[i];
91
try
92

{
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
catch
100

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

{
106
Session.Remove("FilesControls");
107
}
108
}
109
}
public
partial
class
UpMultiFileControl2:System.Web.UI.UserControl2

{3
protectedvoidPage_Load(objectsender,EventArgse)4


{5
if(!Page.IsPostBack)6


{7
SaveCurrentPageFileControls();8
}9
}10
protectedvoidbtAddFile_Click(objectsender,EventArgse)11


{12
AddOneFileControl();13
}14

15

/**////<summary>16
///添加一个上传文件控件17
///</summary>18
privatevoidAddOneFileControl()19


{20
ArrayListal=newArrayList();21
this.tbFiles.Rows.Clear();22
GetFileControlsFromSession();23
HtmlTableRowhtr=newHtmlTableRow();24
HtmlTableCellhtc=newHtmlTableCell();25
htc.Controls.Add(newFileUpload());26
htr.Controls.Add(htc);27
this.tbFiles.Rows.Add(htr);28
SaveCurrentPageFileControls();29
}30

31

/**////<summary>32
///读取缓存中存储的上传文件控件集33
///</summary>34
privatevoidGetFileControlsFromSession()35


{36
ArrayListal=newArrayList();37
if(Session["FilesControls"]!=null)38


{39
al=(System.Collections.ArrayList)Session["FilesControls"];40
for(inti=0;i<al.Count;i++)41


{42
HtmlTableRowhtr1=newHtmlTableRow();43
HtmlTableCellhtc1=newHtmlTableCell();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
privatevoidSaveCurrentPageFileControls()55


{56
ArrayListal=newArrayList();57
foreach(ControlcontrolTRinthis.tbFiles.Controls)58


{59
if(controlTR.GetType().ToString()=="System.Web.UI.HtmlControls.HtmlTableRow")60


{61
HtmlTableCellhtc=(HtmlTableCell)controlTR.Controls[0];62
foreach(ControlcontrolFileUploadinhtc.Controls)63


{64
if(controlFileUpload.GetType().ToString()=="System.Web.UI.WebControls.FileUpload")65


{66
FileUploadtempFileUpload=(FileUpload)controlFileUpload;67
al.Add(tempFileUpload);68
}69
}70
}71
}72
Session.Add("FilesControls",al);73
}74

75
protectedvoidbtUpFiles_Click(objectsender,EventArgse)76


{77
UpLoadFiles();78
}79

80

/**////<summary>81
///上传文件操作82
///</summary>83
privatevoidUpLoadFiles()84


{85
stringfilepath=Server.MapPath("./")+"UploadFiles";86

87
HttpFileCollectionuploadedFiles=Request.Files;88
for(inti=0;i<uploadedFiles.Count;i++)89


{90
HttpPostedFileuserPostedFile=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>
上传文件大小是由上面两个参数所决定的. 涉及到安全因素,最好不要设得太大.
(四). 示例源代码下载
http://www.cnblogs.com/Files/ChengKing/UpMultiFileControl.rar
(五).控件缺点
由于安全原因, 用服务端控件实现,回发时选择的文件不能够保存.
837

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



