65.9K
CodeProject 正在变化。 阅读更多。
Home

多文件上传器

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.09/5 (4投票s)

2007年9月28日

CPOL

1分钟阅读

viewsIcon

33979

downloadIcon

771

本文将帮助你在 ASP.NET Web 应用程序中上传多个文件。

Screenshot - MultiFile_Uploader_640_X_800.jpg

引言

在很多情况下,用户希望允许用户上传多个文件,而你却不得不添加与要上传的文件数量一样多的文件输入元素,或者可能通过 JavaScript 让新的文件“神奇地”出现。

背景

本文介绍如何在 ASP.NET 中同时上传多个文件。本文使用 HTML 文件输入控件和 GridView

使用代码

由于微软的 .NET,使用这段代码变得非常简单。这段代码的核心是帮助在 ASP.NET 中获取文件打开对话框的脚本。

<script type="text/javascript"  language="javascript">
     
function getFile()
{
   document.getElementById("file1").click();
   
   var file = "";
   
   if(document.getElementById("TextBox1").value == "")
        file = document.getElementById("file1").value; 
   else
        file = document.getElementById("TextBox1").value + "\r\n" + 
               document.getElementById("file1").value;
   document.getElementById("TextBox1").value = file ;
}

</script>

要使用这段代码,只需运行 Web 应用程序。完成后,操作就很简单了,只需单击“添加文件”按钮即可开始上传文件以及在 GridView 中显示的文件详细信息。

“添加文件”按钮点击事件的代码如下所示

protected void Button1_Click(object sender, EventArgs e)
{
    if (TextBox1.Text.Length > 0)
    {
        DataTable dt;
        DataRow dr = null;

        FileInfo fileObj = new FileInfo(TextBox1.Text.Trim());
        long size = fileObj.Length / 1024;
        loggedUser = "Administrator";
        folderPath = System.Web.Hosting.HostingEnvironment.MapPath("~/" + loggedUser);
        System.IO.DirectoryInfo dirObj = new DirectoryInfo(folderPath);

        if (!dirObj.Exists)
            dirObj.Create();

        try
        {
            fileObj.CopyTo(folderPath + "\\" + fileObj.Name);
        }
        catch (Exception ee)
        {
            TextBox1.Text = "";
            string error = ee.Message.ToString();
            Response.Write("<script> window.alert(' File With the " + 
                           "same name already uploaded ')</script>");
            return;
        }

        if (GridView1.Rows.Count == 0)
        {
            dt = new DataTable();
            DataColumn dc1 = new DataColumn("File Name", typeof(string));
            DataColumn dc2 = new DataColumn("File Size", typeof(string));
            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);
            dr = dt.NewRow();
            dr["File Name"] = TextBox1.Text.ToString().Trim();
            if (size > 0)
                dr["File Size"] = size.ToString() + " KB";
            else
                dr["File Size"] = fileObj.Length.ToString() + " Bytes";

            dt.Rows.Add(dr);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        else
        {
            int count = GridView1.Rows.Count;
            dt = new DataTable();
            DataColumn dc1 = new DataColumn("File Name", typeof(string));
            DataColumn dc2 = new DataColumn("File Size", typeof(string));
            dt.Columns.Add(dc1);
            dt.Columns.Add(dc2);

            for (int i = 0; i < count; i++)
            {
                dr = dt.NewRow();
                dr["File Name"] = GridView1.Rows[i].Cells[1].Text;
                dr["File Size"] = GridView1.Rows[i].Cells[2].Text;
                dt.Rows.Add(dr);
            }

            dr = dt.NewRow();
            dr["File Name"] = TextBox1.Text.ToString().Trim();
            if(size > 0)
                dr["File Size"] = size.ToString() + " KB";
            else
                dr["File Size"] = fileObj.Length.ToString() + " Bytes";

            dt.Rows.Add(dr);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }
        TextBox1.Text = "";
    }
}

如果你想删除文件,只需使用 GridView 中的删除选项即可。

添加完所有要上传的文件后,你可以继续处理文件并通过单击“上传文件”按钮来上传文件。 “上传文件”按钮的处理代码留作用户练习。

关注点

本文使用了 HTML 文件输入控件和 GridView。它非常简单易于使用。

祝你好运!

© . All rights reserved.