关于的一个棘手问题?

warryman 2008-10-25 12:11:39
情况是这样的:
我现在要做一个文件上传的功能,
<form id="form2" method="post" enctype="multipart/form-data"
action="poList.do?method=readExcel">
<input id="file1" type="file" name="file" />
<input type="submit" name="btnOrder" />
</form>
这样的代码做文件上传是可以的.
但是我现在需要用把上面的控件都隐藏起来,用一个button来触发文件选择和提交这两个功能.
下面是我的代码:
1:隐藏了这些控件
<div style="display: none">

<form id="form2" method="post" enctype="multipart/form-data"
action="poList.do?method=readExcel">
<input id="file1" type="file" name="file" style="display: none;"/>
<input type="submit" name="btnOrder" />
</form>
</div>
2:添加了一个button按钮来触发事件
<a onClick="readExcel();" id="5"><span ><img
align="left" src="images/toolbar/import.gif" />Import</span> </a>
3:下面是js代码
function readExcel(){
document.all.file1.onclick;
document.all.btnOrder.click();
}

结果就是提示js错误:拒绝访问.
我也查了很多资料,说是把file控件隐藏就会出现拒绝访问的情况.
那位帮我看看?
...全文
3230 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenxd110 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Ant_Yan 的回复:]
恩,我知道这样的拒绝访问是input=file的一个老毛病

解决思路是这样子的:
1、首先把input=file做成透明来隐藏
2、要明确一点:用其它按钮的click时间来触发input=file时间是不可能的,一定会拒绝访问
3、input=file必须被主动触发,而不是由Js函数来被动click
4、唯一的办法:点击你的submit按钮,而实际上点的是input=file的按钮
5、所以要用Js控制透明之后的input=file绝对位置
6、曾经的一个做法是,当鼠标进…
[/Quote]

完全正确
因为微软出于安全方面的考虑,只有当鼠标真正单击在上传控件的按钮上浏览到的文件才可以上传(否则,只要你进入我的页面,我就可以随心所欲的得到你的私密文件)。
Ant 2008-10-26
  • 打赏
  • 举报
回复
恩,我知道这样的拒绝访问是input=file的一个老毛病

解决思路是这样子的:
1、首先把input=file做成透明来隐藏
2、要明确一点:用其它按钮的click时间来触发input=file时间是不可能的,一定会拒绝访问
3、input=file必须被主动触发,而不是由Js函数来被动click
4、唯一的办法:点击你的submit按钮,而实际上点的是input=file的按钮
5、所以要用Js控制透明之后的input=file绝对位置
6、曾经的一个做法是,当鼠标进入submit按钮区域,就把input=file动态的移动到submit的位置,相当于有个透明层位于submit上方
7、此时点击submit首先影响的是把它给挡住的input=file,然后再发生自己的点击事件,这样就属于主动点击input=file的按钮
8、需要注意的是隐藏和坐标计算,包括焦点处理都得要妥善完成,你可以先用半透明调整好位置
茄子煸土豆 2008-10-25
  • 打赏
  • 举报
回复
我给你提个建议,,

你可以用JS动态的去生成一个文件上传

document.getElementById('d').parent.childnode="<input type=file value=''>"
类似这种也许可以解决问题.........

java__king 2008-10-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 warryman 的回复:]
楼上的,谢谢,不过还是不我要的效果,我要的效果是
<input type="file" size="25" name="upfile" id="ff" onchange="subf.click();"/>

这个东西也隐藏才行
[/Quote]

这也要隐藏啊?
warryman 2008-10-25
  • 打赏
  • 举报
回复
楼上的,谢谢,不过还是不我要的效果,我要的效果是
<input type="file" size="25" name="upfile" id="ff" onchange="subf.click();"/>

这个东西也隐藏才行
lihan6415151528 2008-10-25
  • 打赏
  • 举报
回复
楼主 我这段代码就是点击页面一个按钮后
出现选择文件对话框
选中之后直接提交
不知道是不是这个意思




<form action="/lhkjywgl/Upload.do " name="UploadForm" enctype="multipart/form-data" method="post" onsubmit="return chickfile();">
<input size="24" type="hidden" name="comment"/>
<input type="hidden" name="iframeName" />
<font size="-1">上传文件:</font> <input type="file" size="25" name="upfile" id="ff" onchange="subf.click();"/>
<input type="submit" value="上传" id="subf" style="display:none">
</form>
warryman 2008-10-25
  • 打赏
  • 举报
回复
你们好像没理解我的意思
4楼你赋值给textbox我文件的地址是对的,但是文件本身怎么提交到后台呢,现在我也是这样做,但是提交的VALUE都只是文件的地址,而不是我真正要的文件流.
现在的问题是这个form只有实现了enctype="multipart/form-data" 才能提交文件流,所以我的<input type="file">必须放到form里
但是把它放到form里并且隐藏它的话就会出现"拒绝访问"
而我不放到里面的话就不能提交文件流到后台/.
期待高手解答/
feng8008 2008-10-25
  • 打赏
  • 举报
回复
code=HTML]<input type="text" id="input1" style="width: 333px;"> <input type="button" id="btn1" value="浏览文件..." style="width: 63px;">
<input type="file" id="file11" name="file" onchange="input1.value=this.value" style="width:1px;position:absolute;left:747px;filter:alpha(opacity=0);">[[/code]
lihan6415151528 2008-10-25
  • 打赏
  • 举报
回复

<form action="" name="" method="post">
<input type="hidden" name="iframeName" />
<font size="-1">上传文件:</font> <input type="file" type="display:none" size="25" name="upfile" id="ff" />
<input type="button" value="上传" onclick="upfile.click()">
</form>
lihan6415151528 2008-10-25
  • 打赏
  • 举报
回复
<form action" name="UploadForm" method="post">
<input type="hidden" name="iframeName" />
<font size="-1">上传文件:</font> <input type="file" size="25" name="upfile" id="ff" onchange="subf.click();"/>
<input type="submit" value="上传" id="subf" style="display:none">
</form>



z\总体实现就是把上传那个组建hidden 然后一个按钮替代他提交 即onClick="subf.click();"
warryman 2008-10-25
  • 打赏
  • 举报
回复
星期天人气不高啊.

81,094

社区成员

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

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