当我使用ASP:File控件将文件上传到站点时,IE和Firefox中的FileName属性不同.在Firefox中,它只提供文件的名称,但IE提供了文件的完整路径.
我通过添加代码解决了这个问题:
Dim FileName As String = file.FileName If FileName.LastIndexOf("\") > 0 Then FileName = FileName.Substring(FileName.LastIndexOf("\") + 1) End If
但我不确定为什么不同的浏览器会有所不同.有谁知道这个的原因?
谢谢.
在IE和Chrome中测试的简单解决方法
new FileInfo(myHttpPostedFileBase.FileName).Name
即使包含路径,这也将确保您始终只获取文件名.
这是一个安全/隐私问题,firefox/mozilla正在做正确的事情,如果没有加载项,applet,silverlight,flash或其他一些机制,你将无法获得完整路径.
以下是有关Mozilla立场的更多信息:
https://developer.mozilla.org/en/Updating_web_applications_for_Firefox_3
请参阅安全更改 - >文件上载字段部分
我希望IE能够效仿,因此我们拥有一致且安全的环境.
在IE8中,此行为已更改,它将仅传递文件名,而不是完整路径.;-)
有关讨论IE8变更的IE博客文章的详细信息和链接:http: //blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails-在-ie8.aspx
希望解析文件名的Serverside应用程序应检查,但不要指望文件名中有反斜杠.
IE8用户设置覆盖:http: //blogs.msdn.com/blogfiles/webtopics/WindowsLiveWriter/UploadingafileusingFileUploadcontrolfail_167/clip_image002_2.jpg