我必须使用Button从客户端上传一个文件。我必须获得完整的客户端路径。例如,
假设,用户从本地计算机上传了一个文件“d:\ my files \ docs \ test.xml”。所以,现在我想获得相同的路径(“d:\ my files \ docs \ test.xml” “)继续进行。我能得到它吗?
我使用过FileUpload1.PostedFile.FileName ...但它在IE上运行良好,但在Firefox中没有...
那么,你能帮我解决这个问题吗?对于Firefox和Chrome ......
答案 0 :(得分:2)
Good Source:
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 Explorer 8现在只提交文件名image.png。
这表明如果网站是受信任的(在IE中)/旧浏览器
,则可能答案 1 :(得分:1)
不,这是不可能的。由于安全限制,浏览器不允许这样做。
如果我可以从javascript设置我想要的文件,黑客可能会从你的PC上获取大量文件。
因此,无论是asp.net还是其他方式,都无法在浏览器中获取完整的客户端路径。
答案 2 :(得分:1)
http://www.ietf.org/rfc/rfc2184.txt和http://www.ietf.org/rfc/rfc2388.txt似乎是讨论此问题的相关RFC。它们相当冗长,但它归结为你确实得到了文件名而不是路径。
浏览器将遵循这些标准,因此通过标准浏览器界面将无法获得您想要的信息。
这留下了其他技术,如javascript,flash,silverlight等。
Javascript通过浏览器对象模型完成所有工作,因此默认情况下再次无效。与播放文件系统有关的任何事情都被视为安全风险(您是否希望随机页面查看您的文件系统?)。
您可以创建自己的闪存或sliverlight上传工具(或找到一个),以便您收集更丰富的信息,我对这些技术知之甚少。在一天结束时,我希望他们遵循关于访问客户端计算机的类似规则。
因此,各地可能遵循的RFC和精神说不,你不能这样做。
您可以随时询问用户文本框中的路径,但是如果它很重要,只需将它们复制到...
答案 3 :(得分:0)
似乎有办法做到这一点,但与此同时它看起来只有在你的机器上才有效。这是一个解释它的链接。
http://www.codingforums.com/showthread.php?t=72288
出现此问题是因为它被视为恶意脚本,试图访问不受其控制的信息,从而为用户提供提示。因此,除非这是针对您控制的机器或信任您的用户,否则这不是最好的想法。大多数看到安全风险警报的用户都会阻止他们。