多文件上传技术详解

本文介绍了一个ASP.NET应用程序中实现多文件上传的方法。通过使用FileUpload控件,并结合Button控件触发文件上传和添加新的上传控件,实现了动态管理文件上传的功能。此外,还介绍了如何将上传控件的状态保存在Session中,以便页面刷新后能够恢复上传状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

页面元素: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 
= "上传成功!";
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值