### FileUpload 控件的概述

FileUpload 控件的主要功能是向指定目录上传文件。该控件包括一个文本和一个浏览按钮。用户可以在文本框中输入完整的文件路径，或者通过按钮浏览并选择需要上传的文件。FileUpload 控件不会自动上传文件，必须设置相关的事件处理程序，并在程序中实现文件上传。图 1 为 FileUpload 控件。

图 1 FileUpload 控件

（1）FileUpload 控件常用属性

FileUpload 控件常用属性及说明如表 1 所示。

表 1 FileUpload 控件常用的属性及说明

属性名称 | 属性值
ID | 获取或设置分配给服务器控件的编程标识符
FileBytes | 获取上传文件的字节数组
FileContent | 获取指向上传文件的 Stream 对象
FileName | 获取上传文件在客户端的文件名称
HasFile | 获取一个布尔值，用于表示 FileUpload 控件是否已经包含一个文件
PostedFile | 获取一个与上传文件相关的 HttpPostedFile 对象，使用该对象可以获取上传文件的相关属性

在表 1 中列出了 3 种访问上传文件的方式，一种是通过 FileBytes 属性，该属性将上传文件数据置于字节数组中，遍历该数组，则能够以字节方式了解上传文件内容。第二种是通过 FileContent 属性，调用该属性可以获得一个指向上传文件的 Stream 对象。可以使用该属性读取上传文件数据，并使用 FileBytes 属性显示文件内容。最后一种是通过 PostedFile 属性，调用该属性可以获得一个与上传文件相关的 HttpPostedFile 对象，使用该对象可以获得与上传文件相关的信息。例如，调用 HttpPostedFile 对象的 ContentLength，可获得上传文件大小；调用 HttpPostedFile 对象的 ContentType 属性，可以获得上传文件类型；调用 HttpPostedFile 对象的 FileName 属性，可以获得上传文件在客户端的完整路径（调用 FileUpload 控件的 FileName 属性，仅能获得文件名称）。

（2）FileUpload 控件的常用方法

FileUpload 控件包括一个核心方法 SaveAs(String filename)，其中参数 filename 是指被保存在服务器中的上传文件的绝对路径。通常，在事件处理程序中调用 SaveAs 方法。然而，在调用 SaveAs 方法之前，首先应该判断 HasFile 属性值是否为 True。如果为 True，则表示 FileUpload 控件已经确认上传文件存在。此时，就可以调用 SaveAs 方法实现文件上传。如果为 False，则需要显示相关提示信息。