FileUpLoad控件用于用户向Web应用程序上传文件。文件上传后,可以把文件保存在任意地方,通常把文件保存在文件系统或数据库。向页面添加FileUpLoad控件会自动地为服务器的<form>标签添加enctype="multipart/form-data"属性。 1. 把文件保存到文件系统 以下代码页面展示了如何使用FileUpLoad控件把图片上传到应用程序。<%@ Page Language="C#" %> <%@ Import Namespace="System.IO" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void btnAdd_Click(object sender, EventArgs e) { if (upImage.HasFile) { if (CheckFileType(upImage.FileName)) { //用FileUpload.FileName属性得到上传文件名,也可以使用HttpPostedFile.FileName得到。 string filePath = "~/UploadImages/" + upImage.FileName; //MapPath方法,检索虚拟路径(绝对的或相对的)或应用程序相关的路径映射到的物理路径。 //FileUpload.SavaAs()方法用于把上传文件保存到文件系统中,也可以使用HttpPostedFile.SaveAs()方法。 upImage.SaveAs(MapPath(filePath)); } } } bool CheckFileType(string fileName) { //GetExtension()方法返回指定的路径字符串的扩展名。 //Path类位于System.IO命名空间中,用于对包含文件或目录路径信息的 String 实例执行操作。 string ext = Path.GetExtension(fileName); switch (ext.ToLower()) { case ".gif": return true; case ".png": return true; case ".jpg": return true; case ".jpeg": return true; default: return false; } } void Page_PreRender() { string upFolder = MapPath("~/UploadImages/"); //在指定的路径中初始化DirectoryInfo类的新实例,DirectoryInfo类公开用于创建、移动和枚举目录和子目录的实例方法。 DirectoryInfo dir = new DirectoryInfo(upFolder); //GetFiles,返回当前目录的文件列表。 dlstImages.DataSource = dir.GetFiles(); dlstImages.DataBind(); } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="lblImageFile" runat="server" Text="Image File" AssociatedControlID="upImage"></asp:Label> <asp:FileUpload ID="upImage" runat="server" /><br /> <asp:Button ID="btnAdd" runat="server" Text="Add Image" OnClick="btnAdd_Click"/><hr /> <asp:DataList ID="dlstImages" RepeatColumns="3" runat="server"> <ItemTemplate> <asp:Image ID="Image1" runat="server" style="width:200px" ImageUrl='<%# Eval("Name","~/UploadImages/{0}") %>' /> <br /> <%# Eval("Name") %> <!--Name,对于文件,获取该文件的名称。对于目录,如果存在层次结构,则获取层次结构中最后一个目录的名称。否则,Name 属性获取该目录的名称。 --> </ItemTemplate> </asp:DataList> </div> </form> </body> </html> 效果: