IE8上传文件时fakepath 的解决方法

By | 2011 年 12 月 26 日

IE8,没想到一个网站里面的上传图片时用JavaScript预览本地图片的功能失效了,图片总是显示错误,用alert()看了下图片的路径居然变成了C:\fakepath\*.jpg,真实的路径被C:\fakepath\取代了,于是在网上开始找解决方案。原来是因为IE8增加了安全选项,默认情况下不显示上传文件的真实路径,进入internet选项,修改下设置即可显示真实的文件路径。

工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。

 

 

 

 

 

附带不用修改浏览器安全配置的javascript代码,兼容ie, firefox全系列

  1. function getPath(obj)
  2. {
  3.   if(obj)
  4.    {
  5.     if (window.navigator.userAgent.indexOf("MSIE")>=1)
  6.      {
  7.        obj.select();
  8.       return document.selection.createRange().text;
  9.      }
  10.     else if(window.navigator.userAgent.indexOf("Firefox")>=1)
  11.      {
  12.       if(obj.files)
  13.        {
  14.         return obj.files.item(0).getAsDataURL();
  15.        }
  16.       return obj.value;
  17.      }
  18.     return obj.value;
  19.    }
  20. }

参数obj为input file对象

 

实例:js部分

function SeePic(img,f){
   if ( f.value != "" ) { img.src = f.value; }
}
var onecount;
onecount=0;
<{counter start=-1 skip=1 print=false}>
subcat = new Array();
<{section name=list loop=$categorys}>
<{section name=list2 loop=$categorys[list].list}>
subcat[<{counter}>] = new Array("<{$categorys[list].list[list2].name}>","<{$categorys[list].id}>","<{$categorys[list].list[list2].id}>");
<{/section}>
<{/section}>
onecount=<{counter}>;
<{literal}>
function changelocation(locationid)
    {
    document.form1.category_id2.length = 0;
    var locationid=locationid;
    var i;
    for (i=0;i < onecount; i++)
        {
            if (subcat[i][1] == locationid)
            {
             document.form1.category_id2.options[document.form1.category_id2.length] = new Option(subcat[i][0], subcat[i][2]);
            }       
        }
    }  
<{/literal}>

 

Html部分:

<div><input name="litimg" type="file" onChange="SeePic(document.picview,document.form1.litimg);" /><br>首页615*321<br><img src="style/img/pview.gif" id="picview" name="picview"></div>

修改后JS部分:

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;      }  } 

function SeePic(img,f){
   if ( f.value != "" ) { img.src = getPath(f); }
}
var onecount;
onecount=0;
<{counter start=-1 skip=1 print=false}>
subcat = new Array();
<{section name=list loop=$categorys}>
<{section name=list2 loop=$categorys[list].list}>
subcat[<{counter}>] = new Array("<{$categorys[list].list[list2].name}>","<{$categorys[list].id}>","<{$categorys[list].list[list2].id}>");
<{/section}>
<{/section}>
onecount=<{counter}>;
<{literal}>
function changelocation(locationid)
    {
    document.form1.category_id2.length = 0;
    var locationid=locationid;
    var i;
    for (i=0;i < onecount; i++)
        {
            if (subcat[i][1] == locationid)
            {
             document.form1.category_id2.options[document.form1.category_id2.length] = new Option(subcat[i][0], subcat[i][2]);
            }       
        }
    }  
<{/literal}>

</script>

 

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据