日期:2014-05-17  浏览次数:20822 次

【转】firefox3不能获得html file的全路径的问题

转自:http://chenhua-1984.iteye.com/blog/405262

firefox3不能获得html file的全路径的问题

    博客分类:
  • js,jquery,json,xml,dom,html.regex
HTML Firefox IE 浏览器 应用服务器

?遇到这个问题以后,在往上 找了以下,发现这个大哥的博客写的很详细,于是就转载下来,以供参考!原文网址是:http://www.cnblogs.com/jaxu/archive/2009/04/19/1439016.html??? 下面是转载的正文:

?

???? 相信很多人都使用过<input type="file"/>这样的HTML控件,它看起来非常普通,是我们在做Web应用程序中用于上传客户端本地文件时不可缺少的控件,然而最近 我发现这个控件在最新的FireFox浏览器(或者最新的IE8中也会存在这个问题,我没有尝试过,读者可以试一下)中却失去了效果,导致我们在通过这个 控件的value属性得到的值中只包含了文件名而没有文件路径,这个在IE7中是可以正常获取到全文件名的(即文件完整路径+文件名)。IE7和大部分当 前流行的浏览器(如FireFox2版本)都可以获取到文件的路径,但是FireFox3却不行,我查了很多资料,发现这是FireFox3为了弥补在低 版本中可能会引起安全问题的一个漏洞,据说黑客会通过FireFox的这一安全隐患向服务器上传文件!其实我也搞不懂,不就是本地文件的路径么?怎么会影 响到服务器的安全问题呢?看来高手们还真的很强!!

??? 来说说我为什么要得到本地所选的文件的路径。大家都知道163邮箱,里面在上传邮件附件的时候是允许选择多附件的,我要做的功能类似于这个,不过我在这里 并不是要研究163是如何实现这个功能,我只想在用户选择文件的时候动态在一个Div中添加他所选择的文件的信息和一个删除按钮,然后将这个文件的信息保 存在页面的一个隐藏域中,当用户保存页面时服务器端代码根据页面隐藏域中的信息将用户所选的文件上传到服务器上。当然,页面隐藏域中的信息至少要包含用户 本地所选文件的路径,否则就不知道在什么地方去找文件了。有关如何实现动态添加HTML节点不是本文的重点,这里我也不贴代码了,下面说说我所遇到的问 题。

??? 下面是一段用于测试问题的代码。

Html代码 ?收藏代码
  1. <!DOCTYPE?html?PUBLIC?"-//W3C//DTD?XHTML?1.0?Transitional//EN"?"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > ??
  2. < html ? xmlns = "http://www.w3.org/1999/xhtml" ? > ??
  3. < head > ??
  4. ????< title > Untitled?Page </ title > ??
  5. </ head > ??
  6. < body > ??
  7. ????< input ? id = "File1" ? type = "file" ? /> < input ? id = "btAdd" ? type = "button" ? value = "Add" ? onclick = "alert(document.getElementById('File1').value);" ? /> ??
  8. </ body > ??
  9. </ html > ??

?运行后在IE7中的结果: