應用程序中經常需要允許用戶把文件上傳到web服務器。盡管在ASP.NET 1.X也可以完成該功能,但在ASP.NET 2.0中使用FileUpload控件會更簡單。
該控件讓用戶更容易地浏覽和選擇用於上傳的文件,它包含一個浏覽按鈕和用於輸入文件名的文本框。只要用戶在文本框中輸入了完全限定的文件名,無論是直接輸入或通過浏覽按鈕選擇,都可以調用FileUpload的SaveAs方法保存到磁盤上。
除了從WebControl類繼承的標准成員,FileUpload控件還公開了幾個只讀的屬性,在表5-8和表5-9列出。
表5-8 FileUpload控件屬性
名 稱 類型 讀 寫 說 明 FileContent Stream × 返回一個指向上傳文件的流對象 FileName string × 返回要上傳文件的名稱,不包含路徑信息 HasFile Boolean × 如果是true,則表示該控件有文件要上傳 PostedFile HttpPostedFile × 返回已經上傳文件的引用。表5-9列出了它所公開的只讀屬性表5-9 HttpPostedFile屬性
名 稱 類 型 讀 寫 說 明 ContentLength integer × 返回上傳文件的按字節表示的文件大小 ContentType string × 返回上傳文件的MIME內容類型 FileName string × 返回文件在客戶端的完全限定名 InputStream Stream × 返回一個指向上傳文件的流對象所有這些屬性將在下面的示例中說明。
為了查看FileUpload控件在實際中的運用,創建一個FileUploadDemo網站。在頁面上添加一個FileUpload控件,然後,添加兩個ASP.NET按鈕,Text屬性分別設置為Save和Display,ID分別設置為btnSave和btnDisplay。增加兩個Label控件,並分別將ID設置為lblMesage和lblDisplay。用<br/>HTML元素分隔這些控件。切換到設計視圖,通過雙擊每個按鈕,為它們在代碼隱藏文件中創建具有默認名稱的Click事件處理程序。完成後的內容文件類似於示例5-11。
示例5-11:FileUploadDemo網站的default.aspx
<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>FileUpload Control</title>
</head>
<body>
<form id=”form1” runat=”server”>
<div>
<h1>FileUpload Control</h1>
<asp:FileUpload ID=”FileUpload1” runat=”server” />
<br />
<asp:Button ID=”btnSave” runat=”server” Text=”Save” OnClick=”btnSave_Click” />
<asp:Button ID=”btnDisplay” runat=”server” Text=”Display” OnClick=”btnDisplay_Click” />
<br />
<br />
<asp:Label ID=”lblMessage” runat=”server” />
<asp:Label ID=”lblDisplay” runat=”server” />
</div>
</form>
</body>
</html>