日期:2014-05-17 浏览次数:21299 次
之前在网站上看到的一些上传文件的功能,感觉还是蛮方便的,这次自己利用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>"); } }效果如图:
当然,这只是一个简单的小例子,个中还有很多的不足,其他的上传文件的方法还没学到,希望各位高人不吝指导。