日期:2014-05-17  浏览次数:21318 次

asp.net简单实例——同时上传多个文件

     之前在网站上看到的一些上传文件的功能,感觉还是蛮方便的,这次自己利用asp.net中的HttpFileCollection类做了一个简单的例子。废话不多说,下面看操作。

    首先,添加一个新的web窗体,在窗体上直接拖拽这几个控件:一个Panel作为容器、一个FileUpload来添加文件、一个TextBox用来设置同时添加文件的个数、以及两个Button,用于实际控制。如下图:


     准备工作做好之后,就开始编写代码了。我们首先来看一下HTML的源代码,这也是跟上图对应的源码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:Panel ID="plUpload" runat="server" Height="91px" Width="224px">
            <asp:FileUpload ID="FileUpload1" runat="server" />
            <br />
        </asp:Panel>
        <br />
        <asp:TextBox ID="txtsum" runat="server" Width="61px"></asp:TextBox>
 <asp:Button ID="btnadd" runat="server" onclick="btnadd_Click" Text="增加" 
            Width="45px" />
 
        <asp:Button ID="btnupfile" runat="server" onclick="btnupfile_Click" Text="上传全部" 
            Width="86px" />
    
    </div>
    </form>
</body>
</html>
CS代码

protected void Page_Load(object sender, EventArgs e)
{

}

protected void btnadd_Click(object sender, EventArgs e)
{
	// 增加上传文件的个数
	FileUpload fu;

	// 循环创建上传文件的控件
	for (int i = 0; i < Convert.ToInt32(txtsum.Text); i++)
	{
		// 初始化上传文件对象
		fu = new FileUpload();
		// 给对象的ID赋值
		fu.ID = "fu_" + i.ToString();
		// 向Panel容器中动态添加对象
		plUpload.Controls.Add(fu);
	}
}

protected void btnupfile_Click(object sender, EventArgs e)
{
	// 声明名称、大小、类型等几个变量
	string f_name, f_size, f_type;
	// 使用一个变量获取到由客户端上传的文件集合
	HttpFileCollection hfc = Request.Files;
	// 循环这个集合
	for (int i = 0; i < hfc.Count; i++)
	{
		// 将每一个文件实例化成可以直接访问的实体
		HttpPostedFile hqf = hfc[i];
		// 将访问的文件名、类型、大小分别赋给相应的变量
		f_name = Path.GetFileName(hqf.FileName);
		f_size = hqf.ContentLength.ToString();
		f_type = hqf.ContentType;
		// 将上传的文件保存的指定的文件夹中
		hqf.SaveAs(Server.MapPath("~/up/")+f_name);
		// 将结果打印到页面上
		Response.Write("文件名称:" + f_name + "<br>" + "文件大小:" + f_size +"<br>" + "文件类型:" + f_type +"<br>");
	}
}
效果如图:



     当然,这只是一个简单的小例子,个中还有很多的不足,其他的上传文件的方法还没学到,希望各位高人不吝指导。