日期:2014-05-16  浏览次数:20377 次

IE8上传文件时javascript读取文件的本地路径的问题("C:\fakepath\")的解决方案
IE8上传文件时javascript读取文件的本地路径的问题("C:\fakepath\")的解决方案


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

  以下就是操作步骤:

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


第一步:




第二部:





------解决方案--------------------
<script type="text/javascript">
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;
}


//以下即为完整客户端路径
var filepath=getPath(document.getElementById("iptfileupload"));
</script>



给分吧




------解决方案--------------------
楼主的方法试了一下IE8可以浏览了,提交到数据的时候出现了一个问题,在这边顺便顶个贴,有没有高人指导一下
http://topic.csdn.net/u/20101018/17/5673a640-e3f7-4500-ad72-370e5b990cdd.html?36459
这是我的贴子地址,请大家帮忙看看,谢谢
------解决方案--------------------
感觉很奇怪,上传图片时,选择图片。window 资源管理器本来就可以预览的。你做图片预览,应该是显示上传,服务器上的图片,表示上传成功!而不应该是显示客服端的图片!
获取客服端路径 5楼的方法是可以获取的
<script>
function setImg()
{
 var isIE = document.all?true:false;
 var isIE7 = isIE && (navigator.userAgent.indexOf('MSIE 7.0') != -1); 
var isIE8 = isIE && (navigator.userAgent.indexOf('MSIE 8.0') != -1); 
var upLoadImgFile = document.getElementById("upLoadImgFile");
 
debugger;
var imgView = document.getElementById("imgView");
if(isIE){
  
if(isIE7 || isIE8)

upLoadImgFile.select();
imgView.src = document.selection.createRange().text; 
document.selection.empty(); 
}else{ imgView.src = upLoadImgFile.value;}
}else{
imgView.src = upLoadImgFile.files.item(0).getAsDataURL();
}
 
}
</script>
但是一个问题,getAsDataURL() 获取的路径是一个很庞大的字符串。会让页面大很多!
本来要贴一下这个值的,结果太长了,不能发表!

我把它保存到一个文本文件居然37.4K