今天遇到一个很变态的js问题 请大神帮忙???

惟Ai你sha 2014-09-24 12:42:44

IE8上传文件时javascript取文件的真实路径的问题("C:\fakepath\xxxxx )

<title>My JSP 'fileupload.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
function click1(){
var file = document.getElementById('file');
alert(getPath(file));
}
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;
}

}
</script>
</head>

<body>
文件
<input type="file" id="file" name="file" />
<input type="button" onClick="click1();" value="submit">
</body>
</html>
很简单的一个js代码 放在本地访问修改后缀名为html js可以运行 没问题的

可是我放在我服务器中访问不运行 点击按钮没反应 不管是html还是jsp都没反应映


于是我alert(document.getElementById('file').value)可以得到对象
但是alert(document.getElementById('file').select())是未定义


在网上查了查说document.getElementById('file')没有select()属性 可是为什么本地可以不报错呢




求解 很郁闷
...全文
208 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
我服务器是tomcat的 在线等
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
谢谢大家 我解决了 具体的思路是先上传到服务器 那样就没有限制了 还是谢谢
天际的海浪 2014-09-24
  • 打赏
  • 举报
回复
引用 6 楼 l971424666 的回复:
[quote=引用 4 楼 jslang 的回复:] 这是安全限制 本地访问 和 服务器中访问 的安全级别是不一样的,可以把服务器设置为可信站点
是安全级别的问题 我获取用户的上传信息 不能一个个的改用户电脑的安全级别的 求 其他办法[/quote] 其他办法可以用flash中的上传组件
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
引用 12 楼 lgc8023 的回复:
这个问题确实ie8安全机制所导致的。lz可以这样获取真实地址: var file_upl = document.getElementById('file'); file_upl.select(); var realpath = document.selection.createRange().text;
这段代码 我放在本地测试时可以的 放在服务器中alert(file_upl.select()) 未定义 这是为什么呢
lgc8023 2014-09-24
  • 打赏
  • 举报
回复
这个问题确实ie8安全机制所导致的。lz可以这样获取真实地址: var file_upl = document.getElementById('file'); file_upl.select(); var realpath = document.selection.createRange().text;
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
引用 10 楼 u011751266 的回复:
[quote=引用 9 楼 l971424666 的回复:] [quote=引用 8 楼 u011751266 的回复:] [quote=引用 7 楼 l971424666 的回复:] [quote=引用 5 楼 u011751266 的回复:] [quote=引用 3 楼 l971424666 的回复:] [quote=引用 2 楼 u011751266 的回复:] 多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的[/quote] 在getPath()方法的几个if else执行体里加上输出语句用来调试。看浏览器的控制台。 如果alert()不被执行的话,那么一定是之前的代码出错了。 具体的话我也看不了。。 你自己多调试调试吧[/quote] 我都调试过 alert(document.getElementById('file').select())是未定义 不知道为什么 求解[/quote] document.getElementById('file')可以正常获取到这个file控件? 我在自己这边测试是有这个方法的。不过这个方法只有在IE下有意义。[/quote] 我这边主要兼容的是ie 但是我测试怎么不行[/quote] 这就不清楚了。抱歉。。[/quote] 没事 还是谢谢了
jennis19118 2014-09-24
  • 打赏
  • 举报
回复
引用 9 楼 l971424666 的回复:
[quote=引用 8 楼 u011751266 的回复:] [quote=引用 7 楼 l971424666 的回复:] [quote=引用 5 楼 u011751266 的回复:] [quote=引用 3 楼 l971424666 的回复:] [quote=引用 2 楼 u011751266 的回复:] 多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的[/quote] 在getPath()方法的几个if else执行体里加上输出语句用来调试。看浏览器的控制台。 如果alert()不被执行的话,那么一定是之前的代码出错了。 具体的话我也看不了。。 你自己多调试调试吧[/quote] 我都调试过 alert(document.getElementById('file').select())是未定义 不知道为什么 求解[/quote] document.getElementById('file')可以正常获取到这个file控件? 我在自己这边测试是有这个方法的。不过这个方法只有在IE下有意义。[/quote] 我这边主要兼容的是ie 但是我测试怎么不行[/quote] 这就不清楚了。抱歉。。
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
引用 8 楼 u011751266 的回复:
[quote=引用 7 楼 l971424666 的回复:] [quote=引用 5 楼 u011751266 的回复:] [quote=引用 3 楼 l971424666 的回复:] [quote=引用 2 楼 u011751266 的回复:] 多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的[/quote] 在getPath()方法的几个if else执行体里加上输出语句用来调试。看浏览器的控制台。 如果alert()不被执行的话,那么一定是之前的代码出错了。 具体的话我也看不了。。 你自己多调试调试吧[/quote] 我都调试过 alert(document.getElementById('file').select())是未定义 不知道为什么 求解[/quote] document.getElementById('file')可以正常获取到这个file控件? 我在自己这边测试是有这个方法的。不过这个方法只有在IE下有意义。[/quote] 我这边主要兼容的是ie 但是我测试怎么不行
jennis19118 2014-09-24
  • 打赏
  • 举报
回复
引用 7 楼 l971424666 的回复:
[quote=引用 5 楼 u011751266 的回复:] [quote=引用 3 楼 l971424666 的回复:] [quote=引用 2 楼 u011751266 的回复:] 多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的[/quote] 在getPath()方法的几个if else执行体里加上输出语句用来调试。看浏览器的控制台。 如果alert()不被执行的话,那么一定是之前的代码出错了。 具体的话我也看不了。。 你自己多调试调试吧[/quote] 我都调试过 alert(document.getElementById('file').select())是未定义 不知道为什么 求解[/quote] document.getElementById('file')可以正常获取到这个file控件? 我在自己这边测试是有这个方法的。不过这个方法只有在IE下有意义。
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
引用 5 楼 u011751266 的回复:
[quote=引用 3 楼 l971424666 的回复:] [quote=引用 2 楼 u011751266 的回复:] 多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的[/quote] 在getPath()方法的几个if else执行体里加上输出语句用来调试。看浏览器的控制台。 如果alert()不被执行的话,那么一定是之前的代码出错了。 具体的话我也看不了。。 你自己多调试调试吧[/quote] 我都调试过 alert(document.getElementById('file').select())是未定义 不知道为什么 求解
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
这是安全限制 本地访问 和 服务器中访问 的安全级别是不一样的,可以把服务器设置为可信站点
是安全级别的问题 我获取用户的上传信息 不能一个个的改用户电脑的安全级别的 求 其他办法
jennis19118 2014-09-24
  • 打赏
  • 举报
回复
引用 3 楼 l971424666 的回复:
[quote=引用 2 楼 u011751266 的回复:] 多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的[/quote] 在getPath()方法的几个if else执行体里加上输出语句用来调试。看浏览器的控制台。 如果alert()不被执行的话,那么一定是之前的代码出错了。 具体的话我也看不了。。 你自己多调试调试吧
天际的海浪 2014-09-24
  • 打赏
  • 举报
回复
这是安全限制 本地访问 和 服务器中访问 的安全级别是不一样的,可以把服务器设置为可信站点
惟Ai你sha 2014-09-24
  • 打赏
  • 举报
回复
引用 2 楼 u011751266 的回复:
多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。
都一样 <input type="button" onClick="click1();" value="submit"> 还是不行的
jennis19118 2014-09-24
  • 打赏
  • 举报
回复
多的代码就不看。。 就看一句。 如果是要在intput标签中绑定click事件的话应当写成。 onclick="click()" on后面的事件名开头不用大写。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧