关于WebForms下面FileUpload控件获取FileName的一个注意点
??? 这个问题源自一位热心而且踏实的读者,发现《ASP.NET 3.5+SQL Server网站模块化开发全程实录》中第117页的一段实例代码: ? using?System;?System.Web; ?System.Web.UI; ?System.Web.UI.HtmlControls; public?partialclass?upLoadFile?:?System.Web.UI.Page { ????protectedvoid?UpLoadFile_Click(Object?sender,?EventArgs?e) ????{ ???????? ????????//获取上传文件名 ????????String?theFileDir??UpLoadFile.PostedFile.FileName;获取文件名的完整路径???????? } ??? 经过这位朋友的严格跟踪测试,发现PostedFile.FileName并不是“获取文件名的完整路径”,而只是文件名。 ??? 于是问题已经本明了了:不同的浏览器对于post<input type="file" />的值(一般这个值中包含了两个信息,分别是[路径+]文件名以及ContentType)有所差别(其本质除了浏览器的行为因素外,还有默认安全设置的问题)。 ??? 因此得出一个更加周全的处理建议:使用FileUpload控件在获取文件名的时候,尽量使用Path.GetFileName(UpLoadFile.PostedFile.FileName)这样的方法,将其视同完整路径来处理,这样可以使任何浏览器下面都能得到正确的文件名,而不会包含路径(书本中用了一个比较繁琐的过程过滤路径,仅供学习之用:))。 (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |