多文件上传技术详解

来源:互联网 发布:tomcat8w java options 编辑:程序博客网 时间:2024/06/06 12:51

页面元素:FileUpLoad控件、Button控件、Label控件。

步骤:

(1)首次打开页面调用SFUPC()方法:每执行一次就向缓存中添加一个FileUpLoad控件,代码如下:

Protected void Page_Load(Object sender,EventArgs e)
{
  
if(!Page.IsPostBack)
  
{
     SFUPC();
  }

}

(2)触发“上传文件”的Click事件,调用UpFile()方法执行文件上传操作,代码如下:

Protected void Button1_Click(Object sender,EventArgs e)
{
  UpFile();
}

(3)触发“添加文件”的Click事件,调用Insert()方法执行添加上传控件的操作,代码如下:

Protected void Button2_Click(Object sender,EventArgs e)
{
  InsertC();
}

(4)SFUPC()方法:主要是保存当前页面上传文件控件集到缓存中。

    private void SFUPC()//该方法用于保存当前页面上传文件控件集到缓存中
    {
        ArrayList AL 
= new ArrayList();//创建动态增加数组
        foreach (Control C in F.Controls)
        
{
            
if (C.GetType().ToString() == "System.Web.UI.HtmlControls.HtmlTableRow")
            
{
                HtmlTableCell HTC 
= (HtmlTableCell)C.Controls[0];
                
foreach (Control FUC in HTC.Controls)
                
{
                    
if (FUC.GetType().ToString() == "System.Web.UI.WebControls.FileUpload")
                    
{
                        FileUpload FU 
= (FileUpload)FUC;
                        AL.Add(FU);
                    }

                }

            }

        }

        Session.Add(
"FilesControls", AL);
    }

(5)定义一个InsertC():用于添加一个上传文件的控件。

    private void InsertC()//该方法用于添加一个上传文件的控件
    {
        ArrayList AL 
= new ArrayList();
        
this.F.Rows.Clear();
        GetInfo();
        HtmlTableRow HTR 
= new HtmlTableRow();
        HtmlTableCell HTC 
= new HtmlTableCell();
        HTC.Controls.Add(
new FileUpload());
        HTR.Controls.Add(HTC);
        F.Rows.Add(HTR);
        SFUPC();
    }

(6)定义GetInfo()方法,用于读取缓存中存储的上传文件控件集。

    private void GetInfo()//该方法用于读取缓存中存储的上传文件控件集
    {
        ArrayList AL 
= new ArrayList();
        
if (Session["FilesControls"!= null)
        
{
            AL 
= (System.Collections.ArrayList)Session["FilesControls"];
            
for (int i = 0; i < AL.Count; i++)
            
{
                HtmlTableRow HTR 
= new HtmlTableRow();
                HtmlTableCell HTC 
= new HtmlTableCell();
                HTC.Controls.Add((System.Web.UI.WebControls.FileUpload)AL[i]);
                HTR.Controls.Add(HTC);
                F.Rows.Add(HTR);
            }

        }

    }

(7)定义UpFile()方法,用于执行文件上传操作。

    private void UpFile()//该方法用于执行文件上传操作
    {
        
string FilePath = Server.MapPath("./"+ "File";

        HttpFileCollection HFC 
= Request.Files;
        
for (int i = 0; i < HFC.Count; i++)
        
{
            HttpPostedFile UserHPF 
= HFC[i];
            
try
            
{
                
if (UserHPF.ContentLength > 0)
                
{
                    UserHPF.SaveAs(FilePath 
+ "/" + System.IO.Path.GetFileName(UserHPF.FileName));
                }

            }

            
catch
            
{
                Label1.Text 
= "处理出错!";
            }


        }

        
if (Session["FilesControls"!= null)
        
{
            Session.Remove(
"FilesControls");
        }

        Label1.Text 
= "上传成功!";
    }