FileUpload Web 服务器控件概述

更新:2007 年 11 月

使用 FileUpload 控件,可以为用户提供一种将文件从其计算机发送到服务器的方法。

本主题包括:

  • 功能

  • 背景

  • 代码示例

  • 类参考

功能

可使用 FileUpload 控件执行下列操作:

  • 使用户能够上载存储在服务器上的特定位置的文件。

  • 限制可上载的文件的大小。

  • 在存储上载的文件之前检查其属性。

返回页首

背景

FileUpload 控件使用户能够上载图片、文本文件或其他文件。FileUpload 控件显示一个文本框,在此用户可以键入希望上载到服务器的文件的名称。该控件还显示一个**“浏览”**按钮,该按钮显示一个文件导航对话框。(显示的对话框取决于用户计算机的操作系统。) 出于安全方面的考虑,不能将文件名预加载到 FileUpload 控件中。

处理上载的文件

当用户已选定要上载的文件并提交页时,该文件将作为请求的一部分上载。文件将被完整地缓存在服务器内存中。文件完成上载后,页代码开始运行。

可以通过下面的方式访问上载的文件:

在代码运行时,可以检查文件的特征,例如文件的名称、大小和 MIME 类型,然后可以保存该文件。可以将文件当作字节数组或流来使用。另外,FileUpload 控件和 HttpPostedFile 对象都支持将文件写入磁盘的 SaveAs 方法。

对所上载文件的保存位置,没有固有限制。但是,若要保存文件,ASP.NET 进程必须具有在指定位置创建文件的权限。此外,还可能将应用程序配置为要求使用绝对路径(而不是相对路径)来保存文件,这是一种安全措施。如果将 httpRuntime 配置元素的 requireRootedSaveAsPath 属性设置为 true(默认值),则在保存上载的文件时必须提供绝对路径。

ms227677.alert_note(zh-cn,VS.90).gif说明:

可以创建基于应用程序根文件夹的绝对路径,方法是使用 HttpServerUtility 类的 MapPath 方法,并将表示应用程序根文件夹的颚化符 (~) 传递给该方法。有关更多信息,请参见 ASP.NET 网站路径

可上载的最大文件的大小取决于 MaxRequestLength 配置设置的值。如果用户试图上载大于最大允许值的文件,则上载会失败。

在部分页更新中使用 FileUpload 控件

FileUpload 控件设计为仅用于回发方案,而不适用于部分页呈现期间的异步回发方案。当您在 UpdatePanel 控件内部使用 FileUpload 控件时,必须使用作为面板的一个 PostBackTrigger 对象的控件来上载文件。UpdatePanel 控件用于更新页的选定区域,而不是使用回发来更新整个页面。有关更多信息,请参见 UpdatePanel 控件概述部分页呈现概述

安全性和 FileUpload 控件

通过使用 FileUpload 控件,用户可以上载可能存在恶意的文件,其中包含脚本文件和可执行文件。无法预先限制用户可以上载的文件。如果希望限制用户可以上载的文件的类型,则必须在上载文件后检查文件特征,如文件的文件扩展名和文件的 ContentType 属性的值。

ms227677.alert_note(zh-cn,VS.90).gif说明:

在提交页面之前,可以使用客户端脚本来检查用户在文本框中键入的文件名。尽管在客户端执行文件名检查会很有用,但这并不能保证用户无法上载不安全的文件类型,如可执行文件。

代码示例

如何:使用 FileUpload Web 服务器控件上载文件

返回页首

类参考

下表列出了与 FileUpload 控件相关的类。

成员

说明

FileUpload

FileUpload 控件的主类。

返回页首

请参见

参考

HtmlInputFile