Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载) - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载) (http://www.webasp.net/article/28/27602.htm) |
| -- 作者:未知 -- 发布日期: 2006-05-09 |
|
学习, 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> 上传文件大小是由上面两个参数所决定的. 涉及到安全因素,不要设得太大. |
| webasp.net |