当前位置:  开发笔记 > 前端 > 正文

HttpPostedFile.FileName - 与IE不同

如何解决《HttpPostedFile.FileName-与IE不同》经验,为你挑选了3个好方法。

当我使用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

但我不确定为什么不同的浏览器会有所不同.有谁知道这个的原因?

谢谢.



1> SeeNoWeevil..:

在IE和Chrome中测试的简单解决方法

new FileInfo(myHttpPostedFileBase.FileName).Name

即使包含路径,这也将确保您始终只获取文件名.


@VincentSels这相当于:`Path.GetFileName(myHttpPostedFileBase.FileName)`,因为它不会删除文件扩展名.

2> Ryan Cook..:

这是一个安全/隐私问题,firefox/mozilla正在做正确的事情,如果没有加载项,applet,silverlight,flash或其他一些机制,你将无法获得完整路径.

以下是有关Mozilla立场的更多信息:

https://developer.mozilla.org/en/Updating_web_applications_for_Firefox_3

请参阅安全更改 - >文件上载字段部分

我希望IE能够效仿,因此我们拥有一致且安全的环境.


仅供参考,我正在使用IE 11,它给了我完整的路径.这就是我发现这个问题的原因,因为我需要处理它.

3> scunliffe..:

在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


IE8默认情况下仍会在Intranet区域中传输完整路径名.参见[IE8安全博客](http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx)."此外,"上传文件时包含本地目录路径"对于Internet区域,URLAction已设置为"禁用".此更改可防止潜在敏感的本地文件系统信息泄漏到Internet.例如,而不是提交完整的路径C:\ users\ericlaw\documents\secret\image.png,Internet Explorer 8现在只提交文件名image.png."
推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有