asp.net中实现文件批量上传

简介:

今天BOSS要求做一个批量上传文件的功能,忙活了半天,总算搞定,希望前辈们多加指点,下面来看一下效果图(这里是简化版,只介绍了主要实现过程,没有美化,勿怪!勿怪!):

单击添加文件,将自动添加FileUpload控件。

单击浏览分别选择要上传的多个文件

单击上传文件,完成文件的上传。

好了不多说,下面是代码:

前台Default.aspx代码

复制代码
复制代码
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>批量上传文件</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="width:300px; margin:50px auto;">
      <asp:Label ID="LblMessage" runat="server" Width="300px" ForeColor="#FF0033" Font-Bold="True" Font-Size="Small" />
      <table border="1" bordercolor="gray" style="border-collapse: collapse;">
        <tr>
          <td style="text-align: center; font-size:10pt; font-weight:bold; color:DimGray;">
             批量上传文件
          </td>
        </tr>
        <tr>
          <td>
             <asp:Panel ID="Pan_UpFile" runat="server" Height="200px" ScrollBars="Auto" Width="250px">
               <table id="Tab_UpDownFile" runat="server" cellpadding="0" cellspacing="0" enableviewstate="true">
                  <tr>
                     <td style="width: 100px; height: 30px">
                        <asp:FileUpload ID="FileUpload1" runat="server"/>
                     </td>
                  </tr>
              </table>
            </asp:Panel>
          </td>
        </tr>
        <tr>
          <td>        
            <asp:Button ID="BtnAdd" runat="server" Text="添加文件" OnClick="BtnAdd_Click" BorderColor="Gray" BorderWidth="1px" />
            <asp:Button ID="BtnUpFile" runat="server" OnClick="BtnUpFile_Click" Text="上传文件" BorderColor="Gray" BorderWidth="1px" />
          </td>
        </tr>
      </table>
     </div>
    </form>
</body>
</html>
复制代码
复制代码

Default.aspx.cs代码(注释有一定说明,都能看懂吧?)

复制代码
复制代码
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;//引入命名空间

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)//首次执行页面
        {
            SFUPC();
        }
    }
    #region  该方法用于将当前页面上传文件控件集保存到Session中
    private void SFUPC()
    {
        ArrayList AL = new ArrayList();//动态增加数组
        foreach (Control C in Tab_UpDownFile.Controls)
        {
            //在表格中查找出FileUpload控件添加到ArrayList中
            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;
                        //设置FileUpload的样式
                        FU.BorderColor = System.Drawing.Color.DimGray;
                        FU.BorderWidth = 1;
                        //添加FileUpload控件
                        AL.Add(FU);
                    }
                }
            }
        }

        //把ArrayList添加到Session中
        Session.Add("FilesControls", AL);
    }
    #endregion

    #region 该方法用于添加一个上传文件的控件
    private void InsertC()
    {
        //实例化ArrayList
        ArrayList AL = new ArrayList();
        this.Tab_UpDownFile.Rows.Clear(); //清除id为F表格里的所有行
        GetInfo();
        //表示 HtmlTable 控件中的 <tr> HTML 元素
        HtmlTableRow HTR = new HtmlTableRow();
        //表示 HtmlTableRow 对象中的 <td> 和 <th> HTML 元素
        HtmlTableCell HTC = new HtmlTableCell();
        //在单元格中添加一个FileUpload控件
        HTC.Controls.Add(new FileUpload());
        //在行中添加单元格
        HTR.Controls.Add(HTC);
        //在表中添加行
        Tab_UpDownFile.Rows.Add(HTR);
        SFUPC();
    }
    #endregion

    #region 该方法用于将保存在Session中的上传文件控件集添加到表格中
    private void GetInfo()
    {
        ArrayList AL = new ArrayList();
        if (Session["FilesControls"] != null)
        {
            AL = (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);
                Tab_UpDownFile.Rows.Add(HTR);
            }
        }
    }
    #endregion

    #region 该方法用于执行文件上传操作
    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
            {
                LblMessage.Text = "上传失败!";
            }
        }
        if (Session["FilesControls"] != null)
        {
            Session.Remove("FilesControls");
        }
        LblMessage.Text = "上传成功!";

    }
    #endregion
    #region 调用InsertC方法,实现添加FileUpLoad控件的功能
    protected void BtnAdd_Click(object sender, EventArgs e)
    {
        InsertC();//执行添加控件方法
        LblMessage.Text = "";
    }
    #endregion
    #region 实现文件上传的功能
    protected void BtnUpFile_Click(object sender, EventArgs e)
    {
        if (this.FileUpload1.PostedFile.FileName != "")
        {
            UpFile();//执行上传文件
            SFUPC();
        }
        else
        {
             LblMessage.Text = "对不起,上传文件为空,请选择上传文件!";
        }

    }
    #endregion

}
复制代码
复制代码
分类:  ASP.NET
本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2012/06/14/2549595.html ,如需转载请自行联系原作者
相关文章
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
324 0
|
5月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
494 3
|
6月前
|
存储 缓存
.NET 6中Startup.cs文件注入本地缓存策略与服务生命周期管理实践:AddTransient, AddScoped, AddSingleton。
记住,选择正确的服务生命周期并妥善管理它们是至关重要的,因为它们直接影响你的应用程序的性能和行为。就像一个成功的建筑工地,工具箱如果整理得当,工具选择和使用得当,工地的整体效率将会大大提高。
259 0
|
12月前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
453 12
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
725 1
|
存储 开发框架 .NET
Windows IIS中asp的global.asa全局配置文件使用说明
Windows IIS中asp的global.asa全局配置文件使用说明
292 1
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
184 6
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
262 4
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
130 0
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。