FileUpload Web 伺服器控制項概觀
更新:2007 年 11 月
FileUpload 控制項可讓您為使用者提供從自己電腦傳送檔案至伺服器的方法。
這個主題包含:
功能
背景
程式碼範例
類別參考
功能
您可以使用 FileUpload 控制項來進行下列各項:
讓使用者上載檔案,您可以將檔案儲存在伺服器上的特定位置。
限制上載檔案的大小。
在儲存檔案之前先檢查已上載檔案的屬性。
回到頁首
背景
FileUpload 控制項可讓使用者上載圖片、文字檔或其他檔案。FileUpload 控制項會顯示文字方塊,讓使用者能夠輸入希望上傳至伺服器的檔案名稱。控制項也會顯示 [瀏覽] 按鈕,以顯示檔案巡覽對話方塊 (顯示的對話方塊則視使用者電腦的作業系統而定)。因安全性的原因,您無法將檔案名稱預先載入 FileUpload 控制項。
處理上載的檔案
當使用者選好要上載的檔案並送出頁面時,會將檔案當做要求的一部分上載。檔案會完全快取在伺服器的記憶體中。當檔案完成上傳時,便會執行頁面程式碼。
您可以使用下列方法存取上傳的檔案:
當做公開在 FileUpload 控制項 FileBytes 屬性的位元組陣列。
當做公開在 FileContent 屬性的資料流。
當做 PostedFile 屬性中的 HttpPostedFile 型別物件。PostedFile 物件會公開屬性,例如 ContentType 和 ContentLength 屬性,提供您關於上載檔案的資訊。
當您的程式碼執行時,可以檢查檔案的特性,例如名稱、大小和 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 控制項的主要類別。 |
回到頁首