2008-11-06 86 views
4

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

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

+2

是IE给你的完整路径名?!?这是一个严重的安全漏洞。 (不是我应该感到惊讶......) – Javier 2008-11-06 14:45:57

回答

8

你不能。实际上,在大多数情况下,只有IE提供的这些信息对于服务器来说并不重要。至少,FF和Opera都不提供这些信息。
[更新]还与Safari浏览器,仍然没有路径试过......有人报道,Chrome浏览器可以提供的信息,尽管是测试版,可能会改变......

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

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

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

3

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

如果您的应用程序需要提交文件的filepath /文件名/内容类型,而不是向用户提供上传项目的默认标题,那么它会执行错误的操作并需要修复。

2

我已经在评论中声明了这一点,但我认为它是重复的。

微软选择让文件控制为文件提供整个路径以便在Intranet应用程序中使用。

只什么样的价值应该包含在一个地方makes mention HTML规范:

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

但是,他们也有多部分/形式 - 数据编码should look like的例子,它不包含文件路径。

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

相关问题