ASP.NET 2.0 新追加控件FileUpload介绍


FileUpload Web 服务器控件概述
  使用 FileUpload 控件,您可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上载图片、文本文件或其他文件时很有用。
提示上载的文件


  FileUpload 控件显示一个文本框,在此用户可以键入希望上载到服务器的文件的名称。该控件还显示一个“浏览”按钮,该按钮显示一个文件导航对话框。(显示的对话框取决于用户计算机的操作系统。)出于安全方面的考虑,不能将文件名预加载到 FileUpload 控件中。
处理上载的文件
  用户选择要上载的文件并提交页面后,该文件作为请求的一部分上载。文件将被完整地缓存在服务器内存中。文件完成上载后,页代码开始运行。
  可以通过下面的方式访问上载的文件:
" 作为在 FileUpload 控件的 FileBytes 属性中公开的字节数组。
" 作为在 FileContent 属性中公开的流。
" 作为 PostedFile 属性中类型 HttpPostedFile 的对象。PostedFile 对象公开某些属性,如 ContentType 和 ContentLength 属性,这些属性提供有关所上载文件的信息。
  在代码运行时,可以检查文件的特征,例如文件的名称、大小和 MIME 类型,然后可以保存该文件。可以将文件当作字节数组或流来使用。另外,FileUpload 控件和 HttpPostedFile 对象都支持将文件写入磁盘的 SaveAs 方法。
对所上载文件的保存位置,没有固有限制。但是,若要保存文件,ASP.NET 进程必须具有在指定位置创建文件的权限。此外,还可能将应用程序配置为要求使用绝对路径(而不是相对路径)来保存文件,这是一种安全措施。如果将 httpRuntime 元素(ASP.NET 设置架构)配置元素的 requireRootedSaveAsPath 属性设置为 true(默认值),则在保存上载的文件时必须提供绝对路径。
 注意
  可以创建基于应用程序根文件夹的绝对路径,方法是使用 HttpServerUtility 类的 MapPath 方法,并将表示应用程序根文件夹的颚化符 (~) 传递给该方法。有关更多信息,请参见 ASP.NET 网站路径。
  可上载的最大文件的大小取决于 MaxRequestLength 配置设置的值。如果用户试图上载大于最大允许值的文件,则上载会失败。
安全性和 FileUpload 控件
  使用 FileUpload 控件,用户可能上载潜在有害的文件,这包含脚本文件和可执行文件。无法预先限制用户可以上载的文件。如果希望限制用户可以上载的文件的类型,则必须在上载文件后检查文件特征(例如,文件扩展名和文件的 ContentType 属性的值)。
 注意
  在提交页面之前,可以使用客户端脚本来检查用户在文本框中键入的文件名。尽管执行文件名的客户端检查可能有用,但这并不能保证用户不能上载不安全的文件类型,如可执行文件。
代码示例:

Boolean fileOK = false;
String path = Server.MapPath("~/UploadedImages/");
if (FileUpload1.HasFile)
...{
String fileExtension =
    System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
String[] allowedExtensions =
...{ ".gif", ".png", ".jpeg", ".jpg" };
for (int i = 0; i < allowedExtensions.Length; i++)
...{
    if (fileExtension == allowedExtensions[i])
    ...{
 fileOK = true;
    }
}
}

if (fileOK)
...{
try
...{
    FileUpload1.PostedFile.SaveAs(path
 + FileUpload1.FileName);
    Label1.Text = "File uploaded!";
}
catch (Exception ex)
...{
    Label1.Text = "File could not be uploaded.";
}
}
else
...{
Label1.Text = "Cannot accept files of this type.";
}

 

System.IO.Path.GetExtension

返回指定的路径字符串的扩展名。

 

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3