3.25.1 使用FileUpload控件上传文件
把文件上传到服务器之后,还可以提取上传文件的属性,把它们显示给终端用户,或者在页面的隐藏代码中使用这些值。程序清单3-34是一个使用FileUpload控件的例子。该页面包含一个FileUpload控件、一个Button控件和一个Label控件。
程序清单3-34 使用FileUpload控件上传文件
VBFileUploadServerControlOnClick="Button1_Click"/>
C#
从这个例子可以看出,整个过程非常简单。页面上的一个按钮启动上传过程。FileUpload控件本身并不启动上传过程,必须通过另一个事件(如Button_Click)来启动它。
编译和运行这个页面时,在生成的页面源代码中有几个地方需要注意。生成的源代码如下所示:
FileUploadServerControl enctype="multipart/form-data">0tZGF0YWRkrSpgAFaEKed5+5/8+zKglFfVLCE="/>
value="/wEWAgL1wLWICAKM54rGBqfR8MhZIDWVowox+TUvybG5Xj0y"/>
首先要注意,因为FileUpload控件在页面上,所以由ASP.NET 4修改了页面的元素,添加了适当的enctype属性。另外,FileUpload控件已转换为HTML元素。
文件上传后,首先(在文件的Button1_Click事件处理程序中)要检查文件引用是否确实放在元素中。如果已指定文件,就应尝试使用FileUpload控件的SaveAs()方法将所引用的文件上传给服务器。SaveAs()方法带一个String参数,该参数包含保存文件的位置。在程序清单3-34使用的String参数中,可以看到该文件保存到C盘的Uploads文件夹中。
PostedFile.FileName属性用于给已保存的文件指定与源文件相同的名称。如果要给文件指定其他名称,只需以如下方式使用SaveAs()方法:
FileUpload1.SaveAs("C:UploadsUploadedFile.txt")
还可以在文件的名称中指定上传的时间。
FileUpload1.SaveAs("C:Uploads"&System.
DateTime.Now.ToFileTimeUtc()&".txt")
成功完成了文件的上传后,就使用上传文件的元数据填充页面上的Label控件。在上面的例子中,要获取文件的名称、大小和内容的类型,并在页面上显示给终端用户。文件上传给服务器后,生成的页面如图3-37所示。
[TR]
[TD][I]498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=228 alt="" src="http://pic.aIhUaU.com/201602/15/113502466.jpg" width=504 border=0>[/TD][/TR]
[TR]
[TD](点击查看大图)图 3-37[/TD][/TR]给另一个服务器上传文件是很容易出错的操作。在代码中使用正确的异常处理来上传文件是非常重要的,这就是例子中使用Try Catch语句来上传文件的原因。