`
zpball
  • 浏览: 919248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IE浏览器上传文件时本地路径变成”C:\fakepath\”的问题

阅读更多
在使用<input id="file_upl" type="file" />控件上传文件时,有时会需要获取文件本地路径展示给客户,这时可以通过这样的方式获取文件本地路径:

document.getElementById('file_upl').value

这在IE7及以前的IE浏览器版本上都没有问题,但是到IE8上面,就不行了,在IE8中你只会获取到这样的路径:"C:\fakepath\xxx”,其中xxx是你的文件名。

这是怎么回事呢?

原来,IE8出于安全性的考虑,上传文件时屏蔽了真实的本地文件路径,而以“C:\fakepath\”取代之。

但是我们就是想要获取真实的本地文件路径怎么办呢?

你可以通过设置浏览器安全选项得到真实路径:

Internet选项 -> 安全 -> 自定义级别 -> 将本地文件上载至服务器时包含本地目录路径 -> 选“启动” -> 确定

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

例如我的上传文件控件的HTML代码是:
<input id="file_upl" type="file" />


那么在JS代码中我就可以这样来获取真实的文件路径:
var file_upl = document.getElementById('file_upl');
file_upl.select();

var realpath = document.selection.createRange().text;


如果我们用的是Ext,那么我们会使用Ext.ux.form.FileField组件,假设我们赋给它的id是"file_upl",这时同样会产生上面的问题,解决的办法也是一样,但是我们获取到type为file的input才行,而根据"file_upl"获取到的元素根本不是我们所需要的,Ext是自动生成了一个type为file的input,你可以通过DebugBar或其他类似工具看到这个input,它的id是赋给Ext.ux.form.FileField的id加上"-file"的后缀,也就是"file_upl-file",所以获取真实文件路径的JS代码就是:
var file_upl = document.getElementById('file_upl-file');
file_upl.select();

var realpath = document.selection.createRange().text;



此方案只针对IE浏览器,对其他浏览器火狐,js代码如下:

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

function getPath(obj)  //参数obj为input file对象
{  
  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;  
    }  
}  

分享到:
评论

相关推荐

    IE8上传文件时javascript取文件的真实路径的问题(\"C:\\fakepath\\xxxxx )

    标题 "IE8上传文件时javascript取文件的真实路径的问题(\"C:\\fakepath\\xxxxx )" 描述了一个在使用Internet Explorer 8 (IE8) 浏览器进行文件上传时遇到的技术挑战。在这个问题中,JavaScript无法获取到文件的实际...

    解决fakepath的js

    自己项目中遇到上传时fakepath的问题,通过这个js解决

    chrome上传图片

    然而,在实际应用中,开发者有时会遇到一些特定的问题,比如在使用`&lt;input type="file" /&gt;`元素进行图片上传时,Chrome浏览器会显示一个特殊的路径"C:\fakepath",这可能会给用户带来困扰或误解。本篇将详细讲解这个...

    详解nodejs实现本地上传图片并预览功能(express4.0+)

    写在前面:计划实现图片上传预览功能,但是本地图片上传所获得路径为 C:\fakepath\”+文件名的形式,得不到文件真实路径,所以无法直接预览,于是采用将图片上传至服务器,传回服务器路径,实现预览。前端采用通过...

    js获取上传文件的绝对路径实现方法

    例如,IE浏览器会返回"C:\\fakepath\\test.txt"来代替真实的"D:\\temp\\file\\test.txt"。这样做的目的是为了防止脚本通过用户选择的文件来获取用户的本地文件系统信息,从而避免安全风险。 在描述中提到,用户想要...

    获取真实路径地址

    js获取真实路径 IE 火狐浏览器的真实路径地址。

    谷歌浏览器临时文件路径修改工具

    为了优化电脑性能,我们需要将谷歌浏览器的临时文件路径修改到其他非系统盘,如D盘或E盘。这可以通过以下步骤实现: 1. 打开谷歌浏览器,点击右上角的三个垂直点,进入“设置”。 2. 在设置页面中,滚动到底部并...

    js+ajax实现获取文件大小的方法.docx

    通常,我们无法直接通过 JavaScript 获取到用户选择的文件的实际路径,只能获取到一个模拟路径,如 `c:/fakepath/`。这是因为浏览器不希望网站获取到用户的本地文件系统信息。因此,我们需要借助其他方法,如 AJAX,...

    图片上传兼容IE

    然而,由于历史原因,Internet Explorer(简称IE)浏览器在处理某些Web技术时存在兼容性问题,这使得图片上传在IE上可能会遇到挑战。本文将深入探讨如何实现图片上传功能并确保其在IE浏览器上的兼容性。 首先,我们...

    C_fakepath_原料药注册生产现场检查要求及问题分析.pptx

    C_fakepath_原料药注册生产现场检查要求及问题分析.pptx

    IE和FF的图片上传预览

    文件路径的处理可能是这样的:对于IE,代码会获取到一个类似于"C:\fakepath\image.jpg"的假路径;而FF则会返回实际的文件系统路径,但出于安全考虑,开发者不能直接访问。因此,对于FF,我们只需要关注File API即可...

    使用VBS浏览本地文件的3种方式,获取完整路径

    在VBScript(VBS)中,浏览本地文件并获取完整路径是常见的任务,尤其是在需要用户交互选择文件的情况下。本文将详细介绍三种不同的方法来实现这一功能,适用于不同的操作系统环境。 1. **使用`UserAccounts.Common...

    jquery实现图片上传前本地预览

    百度之后得到说浏览器基于保护用户的相关安全措施,隐藏了上传的真实路径,用fakepath代替,当然,调整浏览器的相关安全设置可以解决这个问题。但我们不可能让所有用户都通过设置浏览器的安全设置来进行图片上传,...

    使用正则表达式 exec 获取字符串中的汉字

    要求:仅获取attr中的 “编辑发起状态的执行人表单” ,路径C:\fakepath\是不固定的,可以是C:\fakepath\hhh\hhhh\ 解决: var attr = C:\fakepath\编辑发起状态的执行人表单.png attr = title.split(".")[0]; // ...

    ReadINI:用.NET读取INI文件。 包含DLL文件

    #读取INI ReadINI类,用于读取您的.ini文件#用法: 将数据写入您的.ini文件var rini = new ReadINI ( @" C:\FakePath\Settings.ini " );rini . Write ( " Some Key " , " Some Value " , " Some Section. !Default...

    jquery获取file表单选择文件的路径、名字、大小、类型

    当然,出于安全原因,这个路径可能是一个伪造的路径(例如`C:\fakepath\filename`),并不指向实际文件位置。 2. 获取文件名 通过监听`change`事件,我们可以通过事件对象`e`来访问`e.currentTarget.files[0].name`...

    Axure教程:如何实现图片上传 – 自动预览.docx

    该功能可以在 Axure 原型设计中使用,解决了浏览器安全机制下文件路径被 fakepath 代替的问题。 首先,需要在页面上放置三个元件:一个文本框、两个矩形。文本框需要设置输入类型为“文件”,中间的大矩形用于显示...

    js+ajax实现获取文件大小的方法

    在整个过程中,还可能出现一个常见的问题,即在IE浏览器中获取到的文件路径可能包含“c:/fakepath/”,这是因为出于安全考虑,浏览器不允许脚本直接访问用户选择的文件路径。文档中提到了对此问题的解决方案,但遗憾...

Global site tag (gtag.js) - Google Analytics