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 IPostBackDataHandlerPublic 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 控件设计为仅在回发方案中使用,而不是在部分页面呈现期间的异步回发方案中使用。 在 HtmlInputFile 控件中使用 UpdatePanel 控件时,必须使用作为 PostBackTrigger 面板对象的控件上传文件。 UpdatePanel 控件用于更新页面的选定区域,而不是使用回发更新整个页面。 有关详细信息,请参阅 UpdatePanel 控件概述 和 分页呈现概述。
若要指定要上传的文件,请在控件的文本框中输入文件的完整路径 (例如“C:\MyFiles\Test.txt”) 。 还可以通过单击“ 浏览 ”按钮,然后在“选择文件”对话框中查找文件来选择 该文件 。
控件 HtmlInputFile 没有内置方式发回服务器。 若要将文件上传到服务器,请使用 SaveAs 属性中包含的 PostedFile 对象的 方法System.Web.HttpPostedFile。 此操作通常在事件处理方法中完成,例如单击按钮。
注意
使用 SaveAs 类的 HttpPostedFile 方法时,请确保指定 (根路径,例如“C:\MyFiles\Test.txt”) 。 方法的行为 SaveAs 可以在 httpRuntime 元素 (ASP.NET 设置架构)  配置部分使用 requireRootedSaveAsPath 属性指定。 此特性的默认值为 true。 如果将此属性设置为 false,则使用 SaveAs 未指定路径的 方法将尝试将文件 systemroot 放置在 \system32\inetsrv 目录中。 默认情况下,此目录受写保护;因此,无法将文件保存到该处。 请确保为 ASP.NET 用于存储文件的目录的帐户提供写入权限。
上传大型文件时,请使用 maxRequestLengthhttpRuntime 元素 (ASP.NET“设置”架构)  元素的 属性来增加允许的最大文件大小。 当文件超过指定大小时,浏览器中会生成 DNS 错误。 上传大型文件时,还可能收到以下错误消息:
aspnet_wp.exe (PID:已回收 1520) ,因为内存消耗量超过 460 MB, (60% 的可用 RAM) 。
如果遇到此错误消息,请在 Machine.config 文件的 processModel Element (ASP.NET Settings 架构)  元素中增加 属性的值memoryLimit。
有关 实例 HtmlInputFile的初始属性值列表, HtmlInputFile 请参阅 构造函数。
构造函数
| HtmlInputFile() | 初始化 HtmlInputFile 类的新实例。 | 
属性
| Accept | 获取或设置用逗号分隔的 MIME 编码列表,该列表用于约束用户可以选择的文件类型。 | 
| Adapter | 获取控件的浏览器特定适配器。(继承自 Control) | 
| AppRelativeTemplateSourceDirectory | 获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。(继承自 Control) | 
| Attributes | 获取在 ASP.NET 页内的服务器控件标记上表示的所有特性名称和值对的集合。(继承自 HtmlControl) | 
| BindingContainer | 获取包含该控件的数据绑定的控件。(继承自 Control) | 
| ChildControlsCreated | 获取一个值,该值指示是否已创建服务器控件的子控件。(继承自 Control) | 
| ClientID | 获取由 ASP.NET 生成的 HTML 标记的控件 ID。(继承自 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 | 获取控件的事件处理程序委托列表。 此属性为只读。(继承自 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 | 获取对页 UI 层次结构中服务器控件的父控件的引用。(继承自 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) | 返回包含数据控件的元表对象。 |