zoukankan      html  css  js  c++  java
  • 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>

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

    (四). 示例源代码下载

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

  • 相关阅读:
    Mysql case when 根据数字排序 返回 string类型问题
    .NET Core 面试题
    一个人如何完成一整个网站的开发(推荐好文,看完绝对让你回味无穷)转载
    (转)实现C#中等价于的Javascript中的Math.Random()的函数,以得到一个随机数,double类型的,大于0小于1的,17位精度的
    brew安装指定版本的软件
    服务器被植入挖矿木马的心酸过程
    我把双系统的win10抹除了现在开机只按option还是会出现双系统选择,怎么把那个win10给取消了或删除掉
    java.lang.Exception: The server rejected the connection: None of the protocols were accepted
    Linux 技巧:让进程在后台可靠运行的几种方法
    jenkins backup and migration
  • 原文地址:https://www.cnblogs.com/Fooo/p/553104.html
Copyright © 2011-2022 走看看