在js中添加下面这个函数,可以得到<input type="file" name="fileName" id="fileId">的绝对路径
调用:
function showPath(){
var obj = $("fileName");//或var obj = document.getElementById("fileId");
alert(getFullPath(obj));
}
/**
* 获取文件在client端的绝对路径
* */
function getFullPath(obj)
{
if(obj)
{
//ie
if (window.navigator.userAgent.indexOf("MSIE")>=1)
{
obj.select();
return document.selection.createRange().text;
}
//firefox
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 ) 博客分类: javascript
fakepathjavascript .
自从IE8出来以后,文件上传时路径获取就出现了问题
在用js获取路径时:var file= document.getElementById('..').value;
然后输出alert(file); 此时得到的路径是C:\fakepath\xxx.jpg 而不是文件的真实路径
这到底是怎么回事呢?
原来是因为IE8以上的版本都提升了安全级别,默认是不会获取文件的真实路径的
都是用fakepath代替了。
怎么解决这个问题呢?
首先可以通过修改浏览器的安全级别,步骤是:
工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
当然上述的方法肯定不可取,总不能让每一个用户都修改ie配置吧,下面给出一种用js代码修改的方法
兼容ie ,firefox全系列
1.function getPath(obj)
2.{
3. if(obj)
4. {
5.6. if (window.navigator.userAgent.indexOf("MSIE")>=1)
7. {
8. obj.select();
9.10. return document.selection.createRange().text;
11. }
12.13. else if(window.navigator.userAgent.indexOf("Firefox")>=1)
14. {
15. if(obj.files)
16. {
17.18. return obj.files.item(0).getAsDataURL();
19. }
20. return obj.value;
21. }
22. return obj.value;
23. }
24.}