- ASP.NET 教程
- ASP.NET - 首頁
- ASP.NET - 簡介
- ASP.NET - 環境
- ASP.NET - 生命週期
- ASP.NET - 第一個示例
- ASP.NET - 事件處理
- ASP.NET - 伺服器端
- ASP.NET - 伺服器控制元件
- ASP.NET - HTML 伺服器控制元件
- ASP.NET - 客戶端
- ASP.NET - 基本控制元件
- ASP.NET - 指令
- ASP.NET - 狀態管理
- ASP.NET - 驗證器
- ASP.NET - 資料庫訪問
- ASP.NET - ADO.NET
- ASP.NET - 檔案上傳
- ASP.NET - 廣告輪播控制元件 (Ad Rotator)
- ASP.NET - 日曆控制元件
- ASP.NET - 多檢視
- ASP.NET - 面板控制元件
- ASP.NET - AJAX 控制元件
- ASP.NET - 資料來源
- ASP.NET - 資料繫結
- ASP.NET - 自定義控制元件
- ASP.NET - 個性化設定
- ASP.NET - 錯誤處理
- ASP.NET - 除錯
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 資料快取
- ASP.NET - Web 服務
- ASP.NET - 多執行緒
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 資源
- ASP.NET - 快速指南
- ASP.NET - 有用資源
- ASP.NET - 討論
ASP.NET - 檔案上傳
ASP.NET 有兩個控制元件允許使用者將檔案上傳到 Web 伺服器。伺服器收到已釋出的檔案資料後,應用程式可以儲存、檢查或忽略它。以下控制元件允許檔案上傳:
HtmlInputFile - 一個 HTML 伺服器控制元件
FileUpload - 一個 ASP.NET Web 控制元件
這兩個控制元件都允許檔案上傳,但 FileUpload 控制元件會自動設定表單的編碼,而 HtmlInputFile 不會。
在本教程中,我們使用 FileUpload 控制元件。FileUpload 控制元件允許使用者瀏覽並選擇要上傳的檔案,提供一個瀏覽按鈕和一個文字框用於輸入檔名。
一旦使用者透過鍵入名稱或瀏覽在文字框中輸入檔名,就可以呼叫 FileUpload 控制元件的 SaveAs 方法將檔案儲存到磁碟。
FileUpload 的基本語法是:
<asp:FileUpload ID= "Uploader" runat = "server" />
FileUpload 類派生自 WebControl 類,並繼承其所有成員。除此之外,FileUpload 類還具有以下只讀屬性:
| 屬性 | 描述 |
|---|---|
| FileBytes | 返回要上傳的檔案中的位元組陣列。 |
| FileContent | 返回指向要上傳檔案的流物件。 |
| FileName | 返回要上傳的檔名。 |
| HasFile | 指定控制元件是否有要上傳的檔案。 |
| PostedFile | 返回對上傳檔案的引用。 |
已釋出的檔案封裝在 HttpPostedFile 型別的物件中,可以透過 FileUpload 類的 PostedFile 屬性訪問它。
HttpPostedFile 類具有以下常用屬性:
| 屬性 | 描述 |
|---|---|
| ContentLength | 返回上傳檔案的大小(以位元組為單位)。 |
| ContentType | 返回上傳檔案的 MIME 型別。 |
| FileName | 返回完整的檔名。 |
| InputStream | 返回指向上傳檔案的流物件。 |
示例
以下示例演示了 FileUpload 控制元件及其屬性。該表單包含一個 FileUpload 控制元件以及一個儲存按鈕和一個標籤控制元件,用於顯示檔名、檔案型別和檔案長度。
在設計檢視中,表單如下所示:
內容檔案程式碼如下所示:
<body>
<form id="form1" runat="server">
<div>
<h3> File Upload:</h3>
<br />
<asp:FileUpload ID="FileUpload1" runat="server" />
<br /><br />
<asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" style="width:85px" />
<br /><br />
<asp:Label ID="lblmessage" runat="server" />
</div>
</form>
</body>
儲存按鈕背後的程式碼如下所示:
protected void btnsave_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
if (FileUpload1.HasFile)
{
try
{
sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName);
//saving the file
FileUpload1.SaveAs("<c:\\SaveDirectory>" + FileUpload1.FileName);
//Showing the file information
sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName);
sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType);
sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength);
sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName);
}catch (Exception ex)
{
sb.Append("<br/> Error <br/>");
sb.AppendFormat("Unable to save file <br/> {0}", ex.Message);
}
}
else
{
lblmessage.Text = sb.ToString();
}
}
注意以下幾點:
StringBuilder 類派生自 System.IO 名稱空間,因此需要包含它。
try 和 catch 塊用於捕獲錯誤並顯示錯誤訊息。
廣告