利用FileUpload控件
1.单文件上传
aspx前台页面:
<div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="上传文件" onclick="Button1_Click" /></br> <asp:Label ID="Label1" runat="server" Height="269px" Text="Label" Width="360px"></asp:Label> </div>
protected void Button1_Click(object sender, EventArgs e) { String savePath = @"F:\upload\"; //保存路径 if (FileUpload1.HasFile) //如果有文件上传 { try { String filename; //文件名 filename = FileUpload1.FileName; //得到文件名 savePath += filename; //路径+文件名 FileUpload1.SaveAs(savePath); //将上传文件的内容保存到服务器上指定的路径 Page.Response.Write(FileUpload1.PostedFile.ContentType + "</br>" + FileUpload1.PostedFile.ContentLength + "</br>"); //返回上传的文件的MIME类型和文件大小 Page.Response.Write("上传成功"); } catch (Exception ex) { Response.Write("出错:" + ex.Message.ToString()); } } else { Response.Write("没有文件,请选择"); } }
2.多文件上传
多文件上传可以利用多个单文件上传逐个进行处理,也可以利用HttpFileCollection从表单中获得所有文件,然后逐个存入服务器
前台页面再增加一个FileUpload控件;
后台代码如下:
protected void Button1_Click(object sender, EventArgs e) { string filepath = Server.MapPath("upload") + "\\"; HttpFileCollection uploadFiles = Request.Files; //从表单中获取所有上传的文件 for (int i = 0; i < uploadFiles.Count; i++) { HttpPostedFile postedFile = uploadFiles[i]; //提供客户端对已上传单独文件的访问 try { if (postedFile.ContentLength > 0) //文件大小大于0 { Response.Write("文件" + i.ToString() + System.IO.Path.GetFileName(postedFile.FileName) + "<br/>"); postedFile.SaveAs(filepath + System.IO.Path.GetFileName(postedFile.FileName));//存入服务器 } } catch (Exception ex) { Response.Write("出错" + ex.Message.ToString()); } }
关于上传文件大小的限制
在ASP.NET 2.0中FileUpload默认上传文件最大为4M,不过我们可以在web.cofig中修改相关节点来更改这个默认值,相关节点如下:
〈system.web> 〈httpRuntime maxRequestLength="40690" executionTimeout="6000" /> 〈/system.web>
maxRequestLength表示可上传文件的最大值,executionTimeout表示ASP.NET关闭前允许发生的上载秒数。