IE8上传文件时javascript读取文件的本地路径的问题("C:\fakepath\")的解决方案
 前一阵把IE6升级到了IE8,没想到一个网站里面的上传图片时用JavaScript预览本地图片的功能失效了,图片总是显示错误,用alert()看了下图片的路径居然变成了C:\fakepath\*.jpg,真实的路径被C:\fakepath\取代了,于是在网上开始找解决方案。原来是因为IE8增加了安全选项,默认情况下不显示上传文件的真实路径,进入internet选项,修改下设置即可显示真实的文件路径。  以下就是操作步骤:工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
第一步:
第二部:

解决方案 »

  1.   

    如果客户端没有正确配置,难道让他按照你提示的步骤去修改internet选项吗?
      

  2.   

    我一般都不想麻烦,在C盘下面创建一个fakepath目录,把文件件进去,然后在上传。
    特别是搞alipay的证书的时候,老是提示不成功,后来放到Fakepath里面在上传就好了。,
      

  3.   

        <script type="text/javascript">
            function getPath(obj) {
                if (obj) {
                    if (window.navigator.userAgent.indexOf("MSIE") >= 1) {
                        obj.select(); return document.selection.createRange().text;
                    }
                    else if (window.navigator.userAgent.indexOf("Firefox") >= 1) {
                        if (obj.files) {
                            return obj.files.item(0).getAsDataURL();
                        }
                        return obj.value;
                    }
                    return obj.value;
                }
            }         //以下即为完整客户端路径
            var filepath=getPath(document.getElementById("iptfileupload"));
        </script>给分吧
      

  4.   

    5楼的方法,我这 IE8 测试是通过了!呵呵~~ 一会在 IE6,FF等环境下再瞧瞧!
      

  5.   

    这里有支持ie ff的图片上传预览效果
    可以参考一下
      

  6.   

    file:///C:/Documents%20and%20Settings/pdcssa/桌面/2.jpg
      

  7.   

    file:///C:/Documents%20and%20Settings/pdcssa/桌面/2.jpg
    这该如何是好啊!
      

  8.   

    楼主的方法试了一下IE8可以浏览了,提交到数据的时候出现了一个问题,在这边顺便顶个贴,有没有高人指导一下
    http://topic.csdn.net/u/20101018/17/5673a640-e3f7-4500-ad72-370e5b990cdd.html?36459
    这是我的贴子地址,请大家帮忙看看,谢谢
      

  9.   

    感觉很奇怪,上传图片时,选择图片。window 资源管理器本来就可以预览的。你做图片预览,应该是显示上传,服务器上的图片,表示上传成功!而不应该是显示客服端的图片!
    获取客服端路径 5楼的方法是可以获取的
    <script>
    function setImg()
    {
     var isIE = document.all?true:false;
     var isIE7 = isIE && (navigator.userAgent.indexOf('MSIE 7.0') != -1); 
    var isIE8 = isIE && (navigator.userAgent.indexOf('MSIE 8.0') != -1); 
    var upLoadImgFile =  document.getElementById("upLoadImgFile");
     
          debugger;
        var imgView = document.getElementById("imgView");
        if(isIE){
      
         if(isIE7 || isIE8)
            { 
            upLoadImgFile.select();
            imgView.src = document.selection.createRange().text; 
            document.selection.empty(); 
            }else{ imgView.src =  upLoadImgFile.value;}
        }else{
         imgView.src =  upLoadImgFile.files.item(0).getAsDataURL();  
        }
       
    }
    </script>
    但是一个问题,getAsDataURL() 获取的路径是一个很庞大的字符串。会让页面大很多!
    本来要贴一下这个值的,结果太长了,不能发表!我把它保存到一个文本文件居然37.4K
      

  10.   


    再补充下 如果把Firefox改成firefox可以获得图片的名称,但是不是完整路径! 个人觉得感觉可能是那里的问题! 但是如果用这种方法,就应该把所有可能的浏览器都要判断一次,好像也蛮难搞的...
      

  11.   

    5楼的方法,以前用过在IE7也通过了,不过后来项目要求要对应IE8、9,还有谷歌浏览器,Sarafi浏览器,郁闷了,不知道怎么处理了
      

  12.   

    开玩笑#5楼。你难道没有看见lz的这个问题的意思吗?你用selection对象取到的只是fakepath而已!!!!!IE8上并没有解决此问题的方法。其他人也只是盲目跟风,并没有在项目中实际用过吧。另外,lz你认为要求客户设置客户端环境可行????除了lz提出的这个问题。还有一个信任站点的问题也无法显示图片。预览除了直接提交外,没有更好的方法。所以现在很多网站都已经把预览功能去掉了。因为不提交的预览在IE8上无法完全实现!!!!!!!!
      

  13.   


    IE8确实没有解决,我现在对应的就是IE8、9,谷歌还有Safari,郁闷死了,总是出现这个该死的路径,不知道怎么解决。高手能指点一下不?
      

  14.   

    我在IE8下面确实测试成功了.在IE6下面也没有问题,如果没有显示图片,
    //getPath为5楼写的方法.
    var filepath=getPath(document.getElementById("pic_file"));
    //alert(filepath);
    if(filepath!=fileURL){
    ShowIMG.innerHTML = "<img name=MyIMG  src='" + filepath + "'>"
    fileURL = filepath;
    是不是这里的问题"<img name=MyIMG  src='" + filepath + "'>"这个我测试了IE6和8都是可以的.但是如果 "<img name=MyIMG  src='file:\\" + filepath + "'>"是不是加了file:\\这个了.去掉的话可以.不去掉,8还是有问题.
      

  15.   

    我在IE8下面确实测试成功了.在IE6下面也没有问题,如果没有显示图片,
    //getPath为5楼写的方法.
    var filepath=getPath(document.getElementById("pic_file"));
    //alert(filepath);
    if(filepath!=fileURL){
    ShowIMG.innerHTML = "<img name=MyIMG  src='" + filepath + "'>"
    fileURL = filepath;
    是不是这里的问题"<img name=MyIMG  src='" + filepath + "'>"这个我测试了IE6和8都是可以的.但是如果 "<img name=MyIMG  src='file:\\" + filepath + "'>"是不是加了file:\\这个了.去掉的话可以.不去掉,8还是有问题.
      

  16.   


    我也是用这个方法,可是javascript会提示access is denied.无法提交,谁有什么办法。我用的是IE9