之前在网站上看到的一些上传文件的功能,感觉还是蛮方便的,这次自己利用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" οnclick="btnadd_Click" Text="增加"
Width="45px" />
<asp:Button ID="btnupfile" runat="server" οnclick="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>");
}
}
效果如图:
当然,这只是一个简单的小例子,个中还有很多的不足,其他的上传文件的方法还没学到,希望各位高人不吝指导。