`
yunzhu
  • 浏览: 1147262 次
  • 性别: Icon_minigender_1
  • 来自: 南京
博客专栏
B2b19957-cda7-3a9e-83a0-418743feb0ca
监控应用服务器
浏览量:110237
2e8be8be-e51f-346c-bcdd-12623c9aa820
Web前端开发
浏览量:119906
Bfa5df64-a623-34b9-85b8-ef3ce2aed758
经典异常的解决
浏览量:204836
社区版块
存档分类
最新评论

IE8上传文件时文件本地路径变成"C:\fakepath\"的问题

阅读更多

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

document.getElementById('file_upl').value

 

这在IE7及以前版本上都没有问题,但是到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浏览器,对其他浏览器暂时未作探讨。

 

 

 

1
0
分享到:
评论

相关推荐

    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获取上传文件的绝对路径实现方法

    完成上述操作后,当用户使用上传文件时,JavaScript获取到的文件路径将会是真实的文件路径而非虚拟路径。不过,需要指出的是,即使在IE浏览器中开启了此功能,其他浏览器如Chrome、Firefox等仍然遵循标准不提供真实...

    获取真实路径地址

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

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

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

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

    8. 确认后,谷歌浏览器将开始在新路径下保存临时文件。 如果手动操作对您来说过于复杂,可以使用名为“ChromeCashe.exe”的工具。这是一个专门设计用于帮助用户更改谷歌浏览器临时文件路径的软件。根据提供的文件...

    图片上传兼容IE

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

    IE和FF的图片上传预览

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

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

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

    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...

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

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

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

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

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

    请注意,上述代码中关于Win7/IE8的注释指出,在这些环境下,返回的路径可能是`C:\fakepath\`,而不是实际路径,这是由于安全策略的改变。在某些情况下,选择快捷方式时,返回的是快捷方式本身的名称而非目标文件的...

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

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

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

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

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

    在调试过程中可能会遇到`c:/fakepath/`的问题,这是浏览器为了安全考虑,显示的虚拟路径。在实际操作中,你需要通过Ajax发送的是服务器可以访问的真实路径,而不是这个虚拟路径。 总结起来,通过结合JavaScript和...

Global site tag (gtag.js) - Google Analytics