Asp.net 2.0 用 FileUpload 控件实现多文件上传(用户控件)

示例代码:
  1public 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           catch
100           {
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〉

       上传文件大小是由上面两个参数所决定的.  涉及到安全因素,不要设得太大。
posted @ 2009-04-03 12:11  智者生存  阅读(402)  评论(0编辑  收藏  举报