0

我必须使用 Button 从客户端上传一个文件。我必须获取完整的客户端路径。例如,

假设,用户从这台本地机器“d:\my files\docs\test.xml”上传了一个文件。所以,现在我想获得相同的路径(“d:\my files\docs\test.xml”)继续前进。我如何得到它?

我使用过 FileUpload1.PostedFile.FileName ...但它在 IE 上运行良好,但在 Firefox 中却不行...

那么,你能帮我解决一下 Firefox 和 chrome 的问题吗?

4

4 回答 4

2

好来源:

http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx

查看底部附近的“文件上传控制”部分。引:

此外,Internet 区域的“上传文件时包括本地目录路径”URLAction 已设置为“禁用”。此更改可防止潜在敏感的本地文件系统信息泄露到 Internet。例如,Internet Explorer 8 现在将只提交文件名 image.png,而不是提交完整路径 C:\users\ericlaw\documents\secret\image.png。

这表明如果该站点是受信任的(在 IE 中)/较旧的浏览器,则它是可能的

于 2012-06-08T11:46:56.383 回答
1

不,这是不可能的。由于安全限制,浏览器不允许这样做。

如果我可以从 javascript 中设置我想要的文件,黑客可能会从你的 PC 中获取大量文件。

因此,无论是 asp.net 还是其他方式,都无法在浏览器中获取完整的客户端路径。

于 2012-06-08T11:44:32.680 回答
1

http://www.ietf.org/rfc/rfc2184.txthttp://www.ietf.org/rfc/rfc2388.txt似乎是讨论此问题的相关 RFC。它们很长,但归结为您确实获得了文件名而不是路径。

浏览器将遵循这些标准,因此无法通过标准浏览器界面获得您想要的信息。

这留下了其他技术,如 javascript、flash、silverlight 等。

Javascript 通过浏览器对象模型完成所有工作,因此默认情况下也无济于事。与使用文件系统有关的任何事情都被视为安全风险(您是否希望随机页面查看您的文件系统?)。

您可以创建自己的 flash 或 sliverlight 上传工具(或找到一个)来收集更丰富的信息,我对这些技术知之甚少。归根结底,尽管我希望他们遵循有关访问客户端计算机的类似规则。

因此,可能随处可见的 RFC 和精神说不,你不能这样做。

您可以随时向用户询问文本框中的路径,但如果它很重要,只需让他们将其复制...

于 2012-06-08T11:47:42.180 回答
0

似乎有办法做到这一点,但同时它看起来只有在你的机器上才能工作。这是一个解释它的链接。

http://www.codingforums.com/showthread.php?t=72288

出现此问题是因为它被视为恶意脚本,试图访问不受其控制的信息,从而为用户提供提示。因此,除非这是针对您控制下的机器或信任您的用户,否则这不是最好的想法。大多数看到安全风险警报的用户总是会阻止它们。

于 2012-06-08T11:43:54.397 回答