Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)

学习, 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           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>

       上传文件大小是由上面两个参数所决定的.  涉及到安全因素,最好不要设得太大.      

(四). 示例源代码下载

       http://files.cnblogs.com/ChengKing/UpMultiFileControl.rar

(五).控件缺点

       由于安全原因, 用服务端控件实现,回发时选择的文件不能够保存.



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=699244

转载于:https://www.cnblogs.com/hdjjun/archive/2008/06/17/1223922.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值