学习, And 整理了一下.
(一). 示例图片
(二). 示例代码
1 public partial class UpMultiFileControl2 : System.Web.UI.UserControl 2 { 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 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 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