谷歌下,js获取<input type="file" ... />绝对路径失败,被修改成C:\fakepath\...形式 C:\fakepath\.不是完全正确的吗 ?物理路径就是这样的啊<input type="file" ... />不能使用虚拟路径的,哪来的绝对路径一说? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用这种方式来解决,本身就是不太规范的。IE不同版本,firefox不同版本,chrome不同版本,surfer不同版本等等浏览器,再加上不同的操作系统,比如在linux中,在unix中,在windows的不同版本中,获取到的东西或多不少不太一样。你不要指望用这种方式可以一劳永逸解决所有浏览器。不知道你在这里获取这个的目的是什么。 获取的是本地文件路径的绝对路径啊;“C:\fakepath\.不是完全正确的吗 ?物理路径就是这样的啊。”谷歌浏览器不行,被篡改了(我知道是浏览器的问题,就是不知道用js如何去处理),比如ie里面获取的路径是 C:\Documents and Settings\Administrator\桌面\分析\绿钻贵族1.jpg到谷歌里面就变成了“C:\fakepath\绿钻贵族1.jpg” function getPath(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; } }ie和firefox已经可以的。一个网站的某个小功能,我现在只需要解决通过它<input type="file" ... />获取客户端选择的文件路径,谷歌下js得不到 这种方式不是可取的。在不同的os,如linux,windows不同版本,你可以试试,拿到的东西不一样的。 如果你只是在特定os下,在特定浏览器下,那就按照你说的做。其实主要取决于user 刚刚找到分享下。http://www.cesclub.com/bw/jishuzhongxin/Webjishu/2011/1129/16284.html可能是我描述的不清楚吧,亲,我只需要得到一个兼容的获取路径的方案,置于平台不考虑,只是个网站的某个功能而已哦,非常感谢您的回答,我再测试测试下 恩,ok!<script type="text/javascript">var Sys = {};var ua = navigator.userAgent.toLowerCase();var s;(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;//以下进行测试if (Sys.ie) document.write('IE: ' + Sys.ie);if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);if (Sys.opera) document.write('Opera: ' + Sys.opera);if (Sys.safari) document.write('Safari: ' + Sys.safari);</script> 已经解决,参考这位仁兄的:他的原问题:http://q.cnblogs.com/q/28119/下面是他的解决方法:http://www.tnmblogs.com/Post.aspx?Post=b5517078-bd85-426f-b97c-ae9c9b6dab56也谢谢各位提供的思路 非IE都不不能直接通过$("input[type='file']").val()得到路径的,这是安全性设置的问题的即使是IE,也是不能直接得到的,这需要修改设置才能得到只有下面的设置设置成允许才能得到 我也遇到了这个问题,但是不知道怎么解决。还请仁兄指教。代码如下:html部分:<td> <a style="cursor:hand" onclick="go();"> <img alt="添加" src="images/pltj.png" title="添加用户"> </a> <input type="file" name="cfile" id="cfile"> </td>javascript部分:function go(){ var file=document.getElementById("cfile").value; alert(file); window.location.href="consumer_add_pltj.jsp?file="+file;} 另外,我用的是google chorme浏览器 lz嫩帮我看一下吗: if (Sys.ie <= "6.0") { //ie5.5,ie6.0 file_url = document.getElementById("file").value; } else if (Sys.ie >= "7.0") { //ie7,ie8 var file = document.getElementById("file"); file.select(); file_url = document.selection.createRange().text; } else if (Sys.firefox) { //fx //file_url = document.getElementById("file").files[0].getAsDataURL();//获取的路径为FF识别的加密字符串 file_url = readFileFirefox(document.getElementById("file")); } else if (Sys.chrome) { }谷歌不知道怎么写了 楼主 能有兼容IE7、IE8、IE9的方法吗? var file = document.getElementById("file"); file.select(); file_url = document.selection.createRange().text;谢谢,貌似这么写IE9有问题啊 http://www.iefans.net/ie-shangchuan-bendi-lujing-fakepath/ 参考这样的方法解决了 截取字符串 如何在asp.net中实现类似于ACCESS中的筛选窗体 like '___'与len(name,3)的效率谁高? 正则表达式 用逗号分割金额 asp.net是不是也用正则表达式呀?请帮忙看一下下面这个函数什么意思?谢谢! petshop 的CacheParameters和GetCachedParameters的方法 请教一个REQUEST的问题? 更改了80端口,打不开在其他机器上编写的asp.net代码,如何解决。 DataGrid能给标题加提示吗? 数据库访问的问题 谷歌浏览器下调用单击事件不可用 求解:DropDownList添加不上项目(菜鸟季雨林)
IE不同版本,firefox不同版本,chrome不同版本,surfer不同版本等等浏览器,再加上不同的操作系统,比如在linux中,在unix中,在windows的不同版本中,获取到的东西或多不少不太一样。你不要指望用这种方式可以一劳永逸解决所有浏览器。不知道你在这里获取这个的目的是什么。
“C:\fakepath\.不是完全正确的吗 ?物理路径就是这样的啊。”谷歌浏览器不行,被篡改了(我知道是浏览器的问题,就是不知道用js如何去处理),比如ie里面获取的路径是 C:\Documents and Settings\Administrator\桌面\分析\绿钻贵族1.jpg
到谷歌里面就变成了“C:\fakepath\绿钻贵族1.jpg”
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;
}
}
ie和firefox已经可以的。一个网站的某个小功能,我现在只需要解决通过它<input type="file" ... />获取客户端选择的文件路径,谷歌下js得不到
这种方式不是可取的。
在不同的os,如linux,windows不同版本,你可以试试,拿到的东西不一样的。
可能是我描述的不清楚吧,亲,我只需要得到一个兼容的获取路径的方案,置于平台不考虑,只是个网站的某个功能而已哦,非常感谢您的回答,我再测试测试下
恩,ok!<script type="text/javascript">
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :
(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :
(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :
(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :
(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;
//以下进行测试
if (Sys.ie) document.write('IE: ' + Sys.ie);
if (Sys.firefox) document.write('Firefox: ' + Sys.firefox);
if (Sys.chrome) document.write('Chrome: ' + Sys.chrome);
if (Sys.opera) document.write('Opera: ' + Sys.opera);
if (Sys.safari) document.write('Safari: ' + Sys.safari);
</script>
他的原问题:http://q.cnblogs.com/q/28119/
下面是他的解决方法:
http://www.tnmblogs.com/Post.aspx?Post=b5517078-bd85-426f-b97c-ae9c9b6dab56
也谢谢各位提供的思路
即使是IE,也是不能直接得到的,这需要修改设置才能得到
只有下面的设置设置成允许才能得到
代码如下:
html部分:
<td>
<a style="cursor:hand" onclick="go();">
<img alt="添加" src="images/pltj.png" title="添加用户">
</a>
<input type="file" name="cfile" id="cfile">
</td>
javascript部分:
function go()
{
var file=document.getElementById("cfile").value;
alert(file);
window.location.href="consumer_add_pltj.jsp?file="+file;
}
if (Sys.ie <= "6.0") {
//ie5.5,ie6.0
file_url = document.getElementById("file").value;
} else if (Sys.ie >= "7.0") {
//ie7,ie8
var file = document.getElementById("file");
file.select();
file_url = document.selection.createRange().text;
} else if (Sys.firefox) {
//fx
//file_url = document.getElementById("file").files[0].getAsDataURL();//获取的路径为FF识别的加密字符串
file_url = readFileFirefox(document.getElementById("file"));
}
else if (Sys.chrome)
{ }
谷歌不知道怎么写了
var file = document.getElementById("file");
file.select();
file_url = document.selection.createRange().text;
谢谢,貌似这么写IE9有问题啊
参考这样的方法解决了