Visual Studio .NET 2003WebFormsVisual Studio 2005.NET 2.0中级开发Visual StudioJavascriptWindows.NETASP.NETC#
多文件上传器






2.09/5 (4投票s)
本文将帮助你在 ASP.NET Web 应用程序中上传多个文件。
引言
在很多情况下,用户希望允许用户上传多个文件,而你却不得不添加与要上传的文件数量一样多的文件输入元素,或者可能通过 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
。它非常简单易于使用。
祝你好运!