檔案上傳是 Web 應用程式的常見需求。ASP.NET 1.x 雖可實現,但程式碼較繁瑣;ASP.NET 2.0 引入 FileUpload 控件,大幅簡化開發流程,提供直觀的瀏覽按鈕與檔名輸入框,配合 SaveAs 方法即可輕鬆將檔案儲存至伺服器磁碟。
FileUpload 繼承自 WebControl,並公開以下關鍵唯讀屬性:
| 屬性名稱 | 型別 | 說明 |
|---|---|---|
| FileContent | Stream | 返回指向上傳檔案的資料流物件 |
| FileName | string | 返回上傳檔案名稱(不含路徑) |
| HasFile | Boolean | 若為 true 表示控件有檔案待上傳 |
| PostedFile | HttpPostedFile | 返回已上傳檔案的參考物件 |
| 屬性名稱 | 型別 | 說明 |
|---|---|---|
| ContentLength | integer | 上傳檔案大小(位元組) |
| ContentType | string | 檔案 MIME 類型 |
| FileName | string | 用戶端完整檔案路徑 |
| InputStream | Stream | 指向上傳檔案的資料流 |
完整 Default.aspx 標記如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="https://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>
後置程式碼中,btnSave_Click 驗證 HasFile 後呼叫 SaveAs 儲存檔案;btnDisplay_Click 則讀取 PostedFile 屬性顯示檔案詳細資訊。此控件讓檔案上傳功能的實作變得前所未有的簡潔與強大。