共用方式為


FileUpload Web 伺服器控制項概觀

更新:2007 年 11 月

FileUpload 控制項可讓您為使用者提供從自己電腦傳送檔案至伺服器的方法。

這個主題包含:

  • 功能

  • 背景

  • 程式碼範例

  • 類別參考

功能

您可以使用 FileUpload 控制項來進行下列各項:

  • 讓使用者上載檔案,您可以將檔案儲存在伺服器上的特定位置。

  • 限制上載檔案的大小。

  • 在儲存檔案之前先檢查已上載檔案的屬性。

回到頁首

背景

FileUpload 控制項可讓使用者上載圖片、文字檔或其他檔案。FileUpload 控制項會顯示文字方塊,讓使用者能夠輸入希望上傳至伺服器的檔案名稱。控制項也會顯示 [瀏覽] 按鈕,以顯示檔案巡覽對話方塊 (顯示的對話方塊則視使用者電腦的作業系統而定)。因安全性的原因,您無法將檔案名稱預先載入 FileUpload 控制項。

處理上載的檔案

當使用者選好要上載的檔案並送出頁面時,會將檔案當做要求的一部分上載。檔案會完全快取在伺服器的記憶體中。當檔案完成上傳時,便會執行頁面程式碼。

您可以使用下列方法存取上傳的檔案:

當您的程式碼執行時,可以檢查檔案的特性,例如名稱、大小和 MIME 類型,接著您就可以儲存它。您可以將檔案當做位元組陣列或資料流使用。此外,FileUpload 控制項和 HttpPostedFile 物件都會支援將檔案寫入磁碟的 SaveAs 方法。

在上傳檔案的儲存位置方面並無固有限制。但是,若要儲存檔案,ASP.NET 處理序必須在所指定的位置中,擁有建立檔案的權限。此外,基於安全性考量,應用程式可能會設定為要求使用絕對路徑 (而非相對路徑) 儲存檔案。如果 httpRuntime 組態項目的 requireRootedSaveAsPath 屬性設定為 true (預設值),您必須提供絕對路徑來儲存上載檔案。

注意事項:

您可以使用 HttpServerUtility 類別的 MapPath 方法,根據應用程式的根資料夾建立絕對路徑,然後將代表應用程式根資料夾的波狀符號 (~) 運算子傳遞給方法。如需詳細資訊,請參閱 ASP.NET 網站路徑

能夠上傳的最大檔案大小,視 MaxRequestLength 組態設定值而定。如果使用者嘗試上傳大小超過最大允許值的檔案,上傳便會失敗。

使用網頁局部更新中的 FileUpload 控制項

FileUpload 控制項設計為只用於網頁局部呈現期間的回傳狀況,而不用於非同步回傳狀況。當您使用 UpdatePanel 控制項內部的 FileUpload 控制項時,必須使用做為面板 PostBackTrigger 物件的控制項來上載。UpdatePanel 控制項可用來更新選定的頁面區域,而不是以回傳更新整個頁面。如需詳細資訊,請參閱 UpdatePanel 控制項概觀網頁局部呈現概觀

安全性和 FileUpload 控制項

藉由使用 FileUpload 控制項,使用者可以上載具有潛在性惡意的檔案,包括指令碼檔案和可執行檔。您無法事先限制使用者能夠上傳的檔案。如果您想要限制使用者能夠上載的檔案類型,您必須在檔案上傳後先檢查檔案特性 (例如,檔案的副檔名和 ContentType 屬性值)。

注意事項:

在送出頁面之前,您可以使用用戶端指令碼檢查使用者在文字方塊中輸入的檔案名稱。但是,雖然在用戶端執行檔案名稱檢查很好用,卻不能保證使用者無法上載不安全的檔案類型,例如可執行檔。

程式碼範例

HOW TO:以 FileUpload Web 伺服器控制項上載檔案

回到頁首

類別參考

下表列出 FileUpload 控制項的相關類別。

成員

描述

FileUpload

FileUpload 控制項的主要類別。

回到頁首

請參閱

參考

HtmlInputFile