2012-03-29 62 views
0

从我的研究中,我知道我不能使用HTML输入文件来获取目录路径名。但是,我尝试了一种替代方法,将输入文件的值存储到隐藏字段中,并将存储的值传递给我的后端代码以供进一步处理。 Javascript代码: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为我所选择的文件,而不是文件的完整目录路径名。我错过了什么吗?

+2

为了安全起见,我不认为浏览器根本就没有可用的文件夹路径。 – Ivan 2012-03-29 03:28:51

+0

在这种情况下,我真的必须编写一个小程序来选择目录吗? – Sakura 2012-03-29 03:34:00

+0

为什么你想知道完整的路径? – 2012-03-29 03:52:19

回答

2

此行为并不意味着规避。即使你可以找到使用脚本/附加字段的漏洞,这个漏洞也可能在未来被删除。

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

这将是一个安全漏洞,揭示用户的目录结构到服务器(想想在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等等。

+3

无论如何我们现在知道你的用户名。 – 2012-03-29 03:54:10

+0

哈哈......这就是你的想法...... – 2012-03-29 03:56:20

相关问题