HtmlInputFile 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
允許以程式設計方式存取伺服器上的 HTML <input type= file>
項目。
public ref class HtmlInputFile : System::Web::UI::HtmlControls::HtmlInputControl, System::Web::UI::IPostBackDataHandler
[System.Web.UI.ValidationProperty("Value")]
public class HtmlInputFile : System.Web.UI.HtmlControls.HtmlInputControl, System.Web.UI.IPostBackDataHandler
[<System.Web.UI.ValidationProperty("Value")>]
type HtmlInputFile = class
inherit HtmlInputControl
interface IPostBackDataHandler
Public Class HtmlInputFile
Inherits HtmlInputControl
Implements IPostBackDataHandler
- 繼承
- 屬性
- 實作
範例
下列程式代碼範例示範如何使用 HtmlInputFile 控件來建立簡單的檔案上傳案例。 若要讓此範例正常運作,您必須在計算機的磁碟驅動器 C 上建立名為 Temp
的目錄。
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void Button1_Click(object Source, EventArgs e)
{
if (Text1.Value == "")
{
Span1.InnerHtml = "Error: You must enter a file name.";
return;
}
if (File1.PostedFile.ContentLength > 0)
{
try
{
File1.PostedFile.SaveAs("c:\\temp\\" + Text1.Value);
Span1.InnerHtml = "File uploaded successfully to <b>c:\\temp\\" +
Text1.Value + "</b> on the Web server.";
}
catch (Exception exc)
{
Span1.InnerHtml = "Error saving file <b>c:\\temp\\" +
Text1.Value + "</b><br />" + exc.ToString() + ".";
}
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>HtmlInputFile Example</title>
</head>
<body>
<h3>HtmlInputFile Example</h3>
<form id="form1" enctype="multipart/form-data"
runat="server">
Select File to Upload:
<input id="File1"
type="file"
runat="server" />
<p>
Save as file name (no path):
<input id="Text1"
type="text"
runat="server" />
</p>
<p>
<span id="Span1"
style="font: 8pt verdana;"
runat="server" />
</p>
<p>
<input type="button"
id="Button1"
value="Upload"
onserverclick="Button1_Click"
runat="server" />
</p>
</form>
</body>
</html>
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Sub Button1_Click(ByVal Source As Object, ByVal e As EventArgs)
If Text1.Value = "" Then
Span1.InnerHtml = "Error: You must enter a file name."
Return
End If
If File1.PostedFile.ContentLength > 0 Then
Try
File1.PostedFile.SaveAs(("c:\temp\" & Text1.Value))
Span1.InnerHtml = "File uploaded successfully to <b>c:\temp\" & _
Text1.Value & "</b> on the Web server."
Catch exc As Exception
Span1.InnerHtml = "Error saving file <b>c:\temp\" & _
Text1.Value & "</b><br />" & exc.ToString() & "."
End Try
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>HtmlInputFile Example</title>
</head>
<body>
<h3>HtmlInputFile Example</h3>
<form id="form1" enctype="multipart/form-data"
runat="server">
Select File to Upload:
<input id="File1"
type="file"
runat="server" />
<p>
Save as file name (no path):
<input id="Text1"
type="text"
runat="server" />
</p>
<p>
<span id="Span1"
style="font: 8pt verdana;"
runat="server" />
</p>
<p>
<input type="button"
id="Button1"
value="Upload"
onserverclick="Button1_Click"
runat="server" />
</p>
</form>
</body>
</html>
備註
HtmlInputFile使用伺服器控制項來處理將二進位檔或文字檔從瀏覽器用戶端上傳至伺服器。 檔案上傳適用於 Microsoft Internet Explorer 3.02 版或更新版本。
注意
控件 HtmlInputFile 的設計目的只是用於回傳案例,而不是在部分頁面轉譯期間的異步回傳案例中使用。 當您在控件內UpdatePanel使用HtmlInputFile控件時,必須使用面板物件的控件PostBackTrigger來上傳檔案。 UpdatePanel 控件是用來更新頁面的選取區域,而不是使用回傳來更新整個頁面。 如需詳細資訊,請參閱 UpdatePanel控件概觀 和 部分頁面轉譯概觀。
若要指定要上傳的檔案,請在控件的文字框中輸入檔案 (的完整路徑,例如“C:\MyFiles\Test.txt”) 。 您也可以按下 [ 瀏覽 ] 按鈕,然後在 [ 選擇檔案 ] 對話框中尋找檔案,以選取檔案。
控件 HtmlInputFile 沒有回傳至伺服器的內建方式。 若要將檔案上傳至伺服器,請使用 SaveAs 屬性中包含的 PostedFile 物件方法System.Web.HttpPostedFile。 此作業通常是在事件處理方法中完成,例如按下按鈕。
注意
當您使用 類別的 HttpPostedFile 方法時SaveAs,請務必指定根路徑 (例如“C:\MyFiles\Test.txt”) 。 您可以使用 屬性,在 HTTPRuntime 元素 (ASP.NET 設定架構) 組態區段中requireRootedSaveAsPath
指定方法的行為SaveAs。 此屬性的預設值為 true
。 如果您將這個屬性設定為 false
,則使用 SaveAs 沒有指定路徑的 方法會嘗試將檔案 systemroot
放在 \system32\inetsrv 目錄中。 根據預設,此目錄受到寫入保護;因此,檔案無法儲存在該處。 請務必針對您要儲存盤案的目錄,提供 ASP.NET 所使用的帳戶寫入許可權。
上傳大型檔案時,請使用 maxRequestLength
HTTPRuntime 元素的 屬性 (ASP.NET 設定架構) 元素來增加允許的檔案大小上限。 當檔案超過指定的大小時,會在瀏覽器中產生 DNS 錯誤。 上傳大型檔案時,您可能也會收到下列錯誤訊息:
aspnet_wp.exe (PID:已回收 1520) ,因為記憶體耗用量超過 460 MB (60% 的可用 RAM) 。
如果您遇到此錯誤訊息,請在 processModel 元素中增加 屬性的值memoryLimit
, (ASP.NET 設定架構) Machine.config 檔案的 元素。
如需 實例 HtmlInputFile的初始屬性值清單,請參閱 建 HtmlInputFile 構函式。
建構函式
HtmlInputFile() |
初始化 HtmlInputFile 類別的新執行個體。 |
屬性
Accept |
取得或設定 MIME 編碼方式的逗號分隔清單,用以限制使用者所能選取的檔案類型。 |
Adapter |
針對控制項取得瀏覽器的特定配置器。 (繼承來源 Control) |
AppRelativeTemplateSourceDirectory |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 Control) |
Attributes |
取得 ASP.NET 網頁內伺服器控制項標記上所表示,所有成對屬性名稱和值的集合。 (繼承來源 HtmlControl) |
BindingContainer |
取得包含了此控制項之資料繫結的控制項。 (繼承來源 Control) |
ChildControlsCreated |
取得值,指出是否已經建立伺服器控制項的子控制項。 (繼承來源 Control) |
ClientID |
取得 ASP.NET 所產生之 HTML 標記的控制項識別碼。 (繼承來源 Control) |
ClientIDMode |
取得或設定用來產生 ClientID 屬性值的演算法。 (繼承來源 Control) |
ClientIDSeparator |
取得字元值,表示在 ClientID 屬性中所使用的分隔字元。 (繼承來源 Control) |
Context |
取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得 ControlCollection 物件,表示 UI 階層架構中指定之伺服器控制項的子控制項。 (繼承來源 Control) |
DataItemContainer |
如果命名容器實作 IDataItemContainer,則取得命名容器的參考。 (繼承來源 Control) |
DataKeysContainer |
如果命名容器實作 IDataKeysControl,則取得命名容器的參考。 (繼承來源 Control) |
DesignMode |
取得值,指出控制項是否正用於設計介面上。 (繼承來源 Control) |
Disabled |
取得或設定值,指出是否停用 HTML 伺服器控制項。 (繼承來源 HtmlControl) |
EnableTheming |
取得或設定值,指出佈景主題是否套用至此控制項。 (繼承來源 Control) |
EnableViewState |
取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。 (繼承來源 Control) |
Events |
取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。 (繼承來源 Control) |
HasChildViewState |
取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。 (繼承來源 Control) |
ID |
取得或設定指派給伺服器控制項的程式設計識別項。 (繼承來源 Control) |
IdSeparator |
取得用來分隔控制項識別項的字元。 (繼承來源 Control) |
IsChildControlStateCleared |
取得值,指出這個控制項中所包含的控制項是否有控制項狀態。 (繼承來源 Control) |
IsTrackingViewState |
取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。 (繼承來源 Control) |
IsViewStateEnabled |
取得值,指出這個控制項是否已啟用檢視狀態。 (繼承來源 Control) |
LoadViewStateByID |
取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。 (繼承來源 Control) |
MaxLength |
取得或設定從用戶端電腦上載的檔案其檔案路徑的最大長度。 |
Name |
取得或設定 HtmlInputControl 控制項的唯一識別項名稱。 (繼承來源 HtmlInputControl) |
NamingContainer |
取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。 (繼承來源 Control) |
Page |
取得含有伺服器控制項的 Page 執行個體的參考。 (繼承來源 Control) |
Parent |
在網頁控制階層架構中取得伺服器控制項之父控制項的參考。 (繼承來源 Control) |
PostedFile |
取得用戶端所指定上載檔案的存取權。 |
RenderingCompatibility |
取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。 (繼承來源 Control) |
Site |
當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。 (繼承來源 Control) |
Size |
取得或設定可輸入檔案路徑之文字方塊的寬度。 |
SkinID |
取得或設定要套用至控制項的面板。 (繼承來源 Control) |
Style |
取得在 ASP.NET 檔案中套用到指定 HTML 伺服器控制項的所有階層式樣式表 (CSS) 屬性集合。 (繼承來源 HtmlControl) |
TagName |
取得標記項目名稱,其包含 |
TemplateControl |
取得或設定包含了此控制項之樣板的參考。 (繼承來源 Control) |
TemplateSourceDirectory |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
Type |
取得 HtmlInputControl 的型別。 (繼承來源 HtmlInputControl) |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
Value |
取得用戶端電腦上檔案的完整路徑。 |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 HtmlControl 檢視狀態是否區分大小寫。 (繼承來源 HtmlControl) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出伺服器控制項是否會轉譯為頁面上的 UI。 (繼承來源 Control) |
方法
事件
DataBinding |
發生於伺服器控制項繫結至資料來源時。 (繼承來源 Control) |
Disposed |
發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。 (繼承來源 Control) |
Init |
發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。 (繼承來源 Control) |
Load |
發生於載入伺服器控制項至 Page 物件時。 (繼承來源 Control) |
PreRender |
在 Control 物件載入之後但在呈現之前發生。 (繼承來源 Control) |
Unload |
發生於伺服器控制項從記憶體卸載時。 (繼承來源 Control) |
明確介面實作
擴充方法
FindDataSourceControl(Control) |
傳回與指定之控制項的資料控制項相關聯的資料來源。 |
FindFieldTemplate(Control, String) |
傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。 |
FindMetaTable(Control) |
傳回包含資料控制項的中繼資料表物件。 |