敏哥gege的gravatar头像
敏哥gege 2017-11-11 15:12:55

为什么文件上传一直路径一直显示是C:\fakepath\...?

做记录图片上传时,不论是什么路径上传的文件,路径都变成了"C:\fakepath\"+文件名的形式

所有回答列表(3)
coding喵的gravatar头像
coding喵  LV16 2017年11月12日

为什么文件上传一直路径一直显示是C:\fakepath\...?和你一样的问题,但我已经知道了。是不能从file框中拿到路径的,用低版本的IE浏览器还行,高版本的浏览器都不行,几乎没办法解决,网上很多方法我都试过了,尤其是谷歌浏览器,一点办法也没有,我直接文件上传到tomcat中去拿文件在tomcat中的路径

wuyuetiger的gravatar头像
wuyuetiger  LV2 2017年11月13日

浏览器出于安全考虑,客户端的真实文件路径通过代码是无法获取的,无论是客户端还是服务端

tyyking的gravatar头像
tyyking  LV9 2017年11月14日

这个是处于安全性考虑的,比如文件路径会暴露你的用户名或者其他内容,而通过fakepath直接代替了其中的路径名,保护隐私和安全。

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

为什么文件上传一直路径一直显示是C:fakepath...?

但是,作为开发者,我们不能指望客户去这么做,所以我们必须通过代码解决这个问题。

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

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;  
    }  
}  
//参数obj为input file对象

希望能帮助到你

 

 

 

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友