<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>runcode</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Author" content="Sheneyan" />
<script type="text/javascript">
</script>
<script type="text/vbscript">
</script>
<style type="text/css">
</style>
</head>
<body>
<input type="file" onchange="document.getElementById('aa').value = this.value" />
<input id="aa" />
</body>
</html>file的路径是:E:\2009-12-13-4.bmp
怎么获取之后变成了:C:\fakepath\2009-12-13-4.bmp无论是什么路径都会有C:\fakepath\的。
这个什么原因呢?
这个跟jsp页面有关系的吗?
我现在只是html页面
file.select();
try{
return document.selection.createRange().text;
} finally { document.selection.empty(); }
详细看这里
1,是你选择的文件的全路径
2,要么只有文件名,没有任何路径怎么获取之后变成了:C:\fakepath\2009-12-13-4.bmp??
你说的这个不是客户端的<input id="aa" />
显示的值,是服务器端处理过的吧
document.selection.clear()
我用的IE8 和遨游 都是获的C:\fakepath\
而火狐就只有文件名而已
我这个浏览器还说明是百度提供的 windows interner explorer
我js很差的 这个在哪里添加id呢??
这个BUG在IE8下的出现情况目前基本上确定与代码的写法有关,但具体什么情况下会出现并不清楚,IE8下并不是所有的页面都会出现这个问题。
关于这个问题的由来,网上有很多文章和帖子都指向同一个地址:http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/019018.html,可惜这个文章是英文的,我的英文水平有限,只能用google翻译看个大概,问题可能与Web标准有关。目前网上有两种解决方案:
第一种,是更改用户的IE8的浏览器设置
工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
第二种,在IE中使用下面的脚本函数来替换直接取控件value的操作(FireFox中使用obj.files.item(0).getAsDataURL())
function getValue(obj) {
obj.select(); //该对象选取
return document.selection.createRange().text; //返回选取项的文本内容
}
显然,对于Web开发来说,最好是不出现该Bug,如果经过测试,IE8下某个页面中的input file控件不存在该Bug,则可以不必考虑该问题。
如果存在该Bug,而且无法找到原因时,第二种解决方案是比较好的选择
第一种解决方案并不可行,不可能要求所有的用户为了访问我们的网站更改IE设置。