检索使用Firefox上传的文件的完整路径(服务器端)?

时间:2008-11-06 14:34:28

标签: firefox file-upload

当我使用包含<input id="myFile" type="file" runat="server" />的表单上传文件时,我的服务器端代码在使用Firefox时只看到没有完整路径的文件名,而在IE中它可以正常工作。

在这种情况下是否可以检索服务器端的完整文件路径?

3 个答案:

答案 0 :(得分:8)

你做不到。实际上,在大多数情况下,只有IE提供的信息对服务器来说并不重要。 FF和Opera至少都没有提供这些信息 [更新]也尝试使用Safari,仍然没有路径...有人报告Chrome可能提供信息,虽然是测试版,可能会改变......

也许在某些内联网案例中你可能需要它们。在这种情况下,您可能会要求用户将路径粘贴到辅助输入字段中...不是很友好,但至少他们知道他们提供了信息。

实际上,我知道有些人出于某些原因需要这些信息,所以他们使用JavaScript从文件输入字段中选取路径并将其放在隐藏字段中。 FF开发人员发现它不安全(你可以从一个简单的路径中学到很多东西......比如用户的登录名!)所以禁止在FF3中使用这种用法,让一些人对这个版本感到愤怒......

参考文献:Firefox 3's file upload box中提到的Firefox 3 annoyance: Keying-in disabled in file upload control ...;还有许多其他的File input box disabled leads to great usability problem

答案 1 :(得分:3)

您永远无法确定在文件上传文件中提交完整的文件路径,甚至是可靠的文件名或内容类型。即使您获得完整的文件路径,也不知道客户端操作系统上的路径分隔符是什么,或者文件扩展名(如果存在)是否表示任何内容。

如果您的应用程序需要提交文件的filepath / filename / content-type,而不仅仅是为用户提供上传项目的默认标题,那么它就会出错并需要修复。

答案 2 :(得分:2)

我已在评论中说明了这一点,但我认为值得重复。

Microsoft选择让文件控件提供文件的完整路径,以便在Intranet应用程序中使用。

HTML规范仅makes mention值应包含在一个位置:

  

用户代理可以使用的值   value属性作为初始文件   名。

但是,它们还有多部分/表单数据编码should look like的示例,并且它不包含文件路径。

换句话说,IE正在打破标准,你不能依赖其他浏览器,甚至更高版本的IE来支持它。