当我将文件上载到网站的使用ASP:文件控制的文件名财产不同,在即和Firefox。在火狐,这只是提供名称的文件,但即提供全路径的文件。

我曾通过增加密码:

Dim FileName As String = file.FileName
If FileName.LastIndexOf("\") > 0 Then
    FileName = FileName.Substring(FileName.LastIndexOf("\") + 1)
End If

但我不知道为什么这将是不同的之间不同的浏览器。没有人知道这的原因?

谢谢。

有帮助吗?

解决方案

这是一个安全/隐私的关注,火狐/ Mozilla正在做的是正确的,你不会得到一种方式来获得无加载项,小程序,Silverlight的,闪光或一些其他机制的完整路径。

下面是Mozilla的立场的详细信息:

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

请参阅上一节安全Changes->文件上传域

我希望IE就会跟风,所以我们有一个一致的和安全的环境。

其他提示

一个简单的解决方法为在此IE和铬测试

new FileInfo(myHttpPostedFileBase.FileName).Name

这将确保您始终获得刚即使包含路径的文件名。

在IE8,这种行为已经改变,它只会传递文件的名称,而不是完整的路径。;-)

详细信息和链接到即博文讨论的变化IE8:http://blogs.msdn.com/b/webtopics/archive/2009/07/27/uploading-a-file-using-fileupload-control-fails-in-ie8.aspx

服务器端应用程序寻求解析出的文件应该检查,但不是 希望 有反斜杠,在文件名称。

IE8户设定复盖:http://blogs.msdn.com/blogfiles/webtopics/WindowsLiveWriter/UploadingafileusingFileUploadcontrolfail_167/clip_image002_2.jpg

您也可以使用Path.GetFileName(File.FileName)只返回文件名。 例如:

Dim File As HttpPostedFile = context.Request.Files("txtFile")
' let's FileName is "d:\temp\1.txt"
Dim FileName As String = Path.GetFileName(File.FileName)
' FileName will be "1.txt"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top