博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IE8上传文件时文件本地路径变成"C:\fakepath\"的问题
阅读量:6245 次
发布时间:2019-06-22

本文共 1167 字,大约阅读时间需要 3 分钟。

转自:http://yunzhu.iteye.com/blog/1116893

 

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

 1 document.getElementById('file_upl').value 

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

 

这是怎么回事呢?

 

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

 

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

 

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

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

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

 

例如我的上传文件控件的HTML代码是:

 1 <input id="file_upl" type="file" />  

 

那么在JS代码中我就可以这样来获取真实的文件路径:

1 var file_upl = document.getElementById('file_upl');2 file_upl.select();3 4 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浏览器,对其他浏览器暂时未作探讨。

 

 

转载于:https://www.cnblogs.com/x_wukong/p/3701174.html

你可能感兴趣的文章
ftp passive mode
查看>>
安装问题Error: dl failure on line 864
查看>>
oracle表分区详解(按天、按月、按年等)
查看>>
yum update upgrade区别
查看>>
angularjs select 三级联动
查看>>
BufferedReader指定编码及乱码问题解决
查看>>
Zabbix3.0监控Centos 6配置
查看>>
解决MAC下svn run cleanup interrupted错误
查看>>
谈谈Android中的Divider
查看>>
Python基础笔记
查看>>
对Vsftpd的一些总结
查看>>
搭建高可用mongodb集群(二)—— 副本集
查看>>
001-Python运算符
查看>>
saltstack使用之二(完成部署编译nginx以及部分cp模块的使用)
查看>>
Test20160120
查看>>
Android WindowManager$BadTokenException异常
查看>>
ELK学习3 启动es常见错误或问题
查看>>
Linux快捷键和帮助
查看>>
2015年10月22日作业
查看>>
tr命令练习
查看>>