当我使用包含<input id="myFile" type="file" runat="server" />
上传文件的表单时,我的服务器端代码在使用 Firefox 时只能看到没有完整路径的文件名,而它在 IE 中工作得很好。
在这种情况下是否可以在服务器端检索完整的文件路径?
当我使用包含<input id="myFile" type="file" runat="server" />
上传文件的表单时,我的服务器端代码在使用 Firefox 时只能看到没有完整路径的文件名,而它在 IE 中工作得很好。
在这种情况下是否可以在服务器端检索完整的文件路径?
你不能。实际上,在大多数情况下,只有 IE 提供了对服务器并不重要的信息。至少 FF 和 Opera 都没有提供这些信息。
[更新] 还尝试使用 Safari,仍然没有路径...有人报告说 Chrome 可能会提供信息,虽然是测试版,但可能会改变...
在某些 Intranet 案例中,您可能需要它们。在这种情况下,您可能会要求用户将路径粘贴到辅助输入字段中......不是很友好,但至少他们会知道他们提供了信息。
实际上,我知道有些人出于某些原因需要此信息,所以他们使用 JavaScript 从文件输入字段中获取路径并将其放入隐藏字段中。FF 开发人员发现它不安全(你可以从简单的路径中学到很多东西……比如用户的登录名!)所以在 FF3 中禁止这样的使用,这让一些人对这个版本感到愤怒……
参考: Firefox 3 的烦恼中提到的Firefox 3 的文件上传框:Keying-in disabled in file upload control ...;禁用文件输入框也会导致很大的可用性问题,等等。
您永远无法确保获得完整的文件路径,甚至无法确定在文件上传文件中提交的可靠文件名或内容类型。即使您获得完整的文件路径,您也不知道客户端操作系统上的路径分隔符是什么,或者文件扩展名(如果存在)是否表示任何内容。
如果您的应用程序需要提交文件的文件路径/文件名/内容类型,而不是为用户提供上传项目的默认标题,那么它做错了,需要修复。