是否可以在<asp:FileUpload>按钮中获取完整的客户端路径?



我必须使用<asp:FileUpload>按钮从客户端上传一个文件。我必须获取完整的客户端路径。

例如,假设用户从此本地计算机"d:\my files\docs\test.xml"上传了一个文件。所以,现在我想获得相同的路径("d:\my files\docs\test.xml")以进一步进行。我如何获得它?

我用过FileUpload1.PostedFile.FileName.但它在IE上工作正常,但在Firefox中却不能。

如何为Firefox和Chrome解决此问题?

好的来源:

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

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

此外,"上传文件时包括本地目录路径" 互联网区域的 URLAction 已设置为"禁用"。此更改 防止潜在敏感的本地文件系统泄漏 信息到互联网。例如,而不是提交 完整路径 C:\users\ericlaw\documents\secret\image.png, Internet 资源管理器 8 现在将仅提交文件名图像.png。

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

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

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

因此,无论 asp.net,都不可能在浏览器中获取完整的客户端路径。

http://www.ietf.org/rfc/rfc2184.txt 和 http://www.ietf.org/rfc/rfc2388.txt 似乎是讨论这个问题的相关RFC。它们很长,但归根结底是你确实得到了一个文件名,但没有一个路径。

浏览器

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

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

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

您可以创建自己的Flash或sliverlight上传工具(或找到一个),该工具可以让您收集更丰富的信息,我对这些技术了解不多。归根结底,我希望他们遵循有关访问客户端计算机的类似规则。

因此,RFC和可能到处都遵循的精神说,不,你不能这样做。

您可以随时要求用户在文本框中输入路径,但如果它很重要,只需让他们将其复制到...

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

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

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

最新更新