【问题标题】:HTML and Javascript: getting full directory pathname using input fileHTML 和 Javascript:使用输入文件获取完整目录路径名
【发布时间】:2012-03-29 03:25:55
【问题描述】:

根据我的研究,我知道我不能使用 HTML 输入文件来获取目录路径名。但是,我尝试了另一种方法,将输入文件的值存储到隐藏字段中,并将存储的值传递给我的后端代码以进行进一步处理。 Javascript代码:

<script type="text/javascript">
function folder_address()
{
    var address=document.getElementById('folder_address');
    var folder=document.getElementById('folder');
    folder.value=address.value;
}
</script>

HTML 代码:

<input type="file" id="folder_address" name="folder_address" />
<input type="hidden" id="folder" name="folder" />

但是,我仍然得到 folder.value 作为我选择的文件,而不是文件的完整目录路径名。我错过了什么吗?

【问题讨论】:

  • 出于安全原因,我认为浏览器根本不会将文件夹路径提供给 Javascript。
  • 那样的话,我真的要写一个小程序来选择目录吗?
  • 为什么要知道完整路径?

标签: javascript html


【解决方案1】:

这种行为并不是要规避的。即使您可以使用脚本/附加字段找到漏洞,该漏洞也很可能在未来被移除。

我强烈建议一种不依赖于知道用户选择的本地路径的设计。

将用户的目录结构透露给服务器将是一个安全漏洞(想想 Windows 中的c:\users\tmedora;现在你知道我的用户名了)。此外,文件系统可以以不同的方式格式化路径,并且用户可以随意命名/重命名目录。我不确定完整路径到服务器的值是多少。除非您处于极度受控的环境中,否则您甚至无法保证您能够解析路径,更不用说指望它包含一致的信息了。

包含完整路径的 W3 specifically states 是一个安全漏洞,需要用户代理将字符串 c:\fakepath\ 添加到文件路径。

一些旧版用户代理实际上包含完整路径(这是 安全漏洞)。

另见IE Gives full path, FF gives only filename (or directory browse)How to get the full path of the file from a file input 和许多其他人。

【讨论】:

  • 现在我们知道你的用户名了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多