日期:2014-05-17  浏览次数:20399 次

谷歌下,js获取<input type="file" ... />绝对路径失败,被修改成C:\fakepath\...形式
RT,
jq写的 $("input[type='file']").val(); 在ie下没出现问题,可是谷歌里面被修改了,求经验大手意见
------解决方案--------------------
C:\fakepath\.不是完全正确的吗 ?物理路径就是这样的啊
<input type="file" ... />不能使用虚拟路径的,哪来的绝对路径一说?
------解决方案--------------------
你用这种方式来解决,本身就是不太规范的。
IE不同版本,firefox不同版本,chrome不同版本,surfer不同版本等等浏览器,再加上不同的操作系统,比如在linux中,在unix中,在windows的不同版本中,获取到的东西或多不少不太一样。你不要指望用这种方式可以一劳永逸解决所有浏览器。

不知道你在这里获取这个的目的是什么。
------解决方案--------------------
引用:
function getPath(obj){
if(obj){
//ie
                if (window.navigator.userAgent.indexOf("MSIE")>=1)
                {
                    obj.select();
                    return document.s……


这种方式不是可取的。
在不同的os,如linux,windows不同版本,你可以试试,拿到的东西不一样的。
------解决方案--------------------
如果你只是在特定os下,在特定浏览器下,那就按照你说的做。其实主要取决于user
------解决方案--------------------
引用:
刚刚找到分享下。http://www.cesclub.com/bw/jishuzhongxin/Webjishu/2011/1129/16284.html
可能是我描述的不清楚吧,亲,我只需要得到一个兼容的获取路径的方案,置于平台不考虑,只是个网站的某个功能而已哦,非常感谢您的回答,我再测试测试下
引用:

如果你只是在特定os下,在特定浏览器下,那就按照你说的做。其实……


恩,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>

------解决方案--------------------
非IE都不不能直接通过$("input[type='file']").val()得到路径的,这是安全性设置的问题的
即使是IE,也是不能直接得到的,这需要修改设置才能得到
只有下面的设置设置成允许才能得到