<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>runcode</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Author" content="Sheneyan" />
<script type="text/javascript">
</script>
<script type="text/vbscript">
</script>
<style type="text/css">
</style>
</head>
<body>
<input type="file" onchange="document.getElementById('aa').value = this.value" />
<input id="aa" />
</body>
</html>file的路径是:E:\2009-12-13-4.bmp
怎么获取之后变成了:C:\fakepath\2009-12-13-4.bmp无论是什么路径都会有C:\fakepath\的。
这个什么原因呢?

解决方案 »

  1.   


    这个跟jsp页面有关系的吗?
    我现在只是html页面
      

  2.   

    对于ie7/8可以这样
    file.select();
    try{
        return document.selection.createRange().text;
    } finally { document.selection.empty(); }
    详细看这里
      

  3.   

    我用IE8 怎么可以得到正确的路经了。。  file的路径是: F:\QQ截图未命名.png后面的那个文本框我也得到的是这个路径啊 可以是浏览器原因吧。。
      

  4.   

    不会吧,那是你浏览器的问题吧或者系统中毒了。你的代码只能有2种结果:
    1,是你选择的文件的全路径
    2,要么只有文件名,没有任何路径怎么获取之后变成了:C:\fakepath\2009-12-13-4.bmp??
    你说的这个不是客户端的<input id="aa" />
    显示的值,是服务器端处理过的吧
      

  5.   

    document.selection.createRange().text; 
    document.selection.clear()
      

  6.   


    我用的IE8 和遨游  都是获的C:\fakepath\
    而火狐就只有文件名而已
      

  7.   


    我这个浏览器还说明是百度提供的 windows interner explorer
      

  8.   


    我js很差的  这个在哪里添加id呢??
      

  9.   

     在使用<input type='file' />控件的过程中,发现一个只有IE8下才存在的BUG,有时候取文件上传的路径(value),会由类似于D:\*.*变成C:\fakepath\*.*,即真实的路径被C:\fakepath\所取代了。
            这个BUG在IE8下的出现情况目前基本上确定与代码的写法有关,但具体什么情况下会出现并不清楚,IE8下并不是所有的页面都会出现这个问题。
    关于这个问题的由来,网上有很多文章和帖子都指向同一个地址:http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/019018.html,可惜这个文章是英文的,我的英文水平有限,只能用google翻译看个大概,问题可能与Web标准有关。目前网上有两种解决方案:
    第一种,是更改用户的IE8的浏览器设置
    工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
    第二种,在IE中使用下面的脚本函数来替换直接取控件value的操作(FireFox中使用obj.files.item(0).getAsDataURL())
    function getValue(obj) {
        obj.select(); //该对象选取 
        return document.selection.createRange().text; //返回选取项的文本内容 
    }
    显然,对于Web开发来说,最好是不出现该Bug,如果经过测试,IE8下某个页面中的input file控件不存在该Bug,则可以不必考虑该问题。
    如果存在该Bug,而且无法找到原因时,第二种解决方案是比较好的选择
    第一种解决方案并不可行,不可能要求所有的用户为了访问我们的网站更改IE设置。