如何给赋值?

zhangxulovefangfang 2010-05-28 04:14:24
我知道由于安全因素<input type="file" id="uploadFile" /> 是只读的,但我要动态上传多个文件,我必须要给这个组件赋值。

以下这种方式我已经试过,是可以的
var path = "c:\\123.text";
var uploadFile = document.getElementById("uploadFile");
var WshShell=new ActiveXObject("WScript.Shell");
//将路径放入剪切板
window.clipboardData.setData('text', path);
uploadFile.focus();
//Ctrl + A 操作
WshShell.sendKeys("^a");
//Ctrl + V 操作(sendKeys对于中文赋值操作显得无力,所以只能模拟键盘操作)
WshShell.sendKeys("^v");

但我有多个已知的本地文件路径,需要循环通过上述方法逐个上传,在循环的过程中,如果我把鼠标点击到其他的可以输入的组件中,例如一个word文档,或eclipse的控制台中,就会在那里出现被ctrl+v 的路径,从而影响了以上方式的赋值。也就是说,只要使用上述方式循环上传本地文件,就不能做其他的涉及到鼠标焦点的事了,这样用户是肯定不能接受的,试想一下,用户上传100个文件,而且都不小,在上传的过程中,用户想去写个文档,或ctrl+c操作都会影响到文件上传。

难道就没有其他的方式实现给<input type="file" id="uploadFile" />赋值吗,用控件也行,只要能赋值,怎么都行,请教各位大侠了,多谢多谢!
...全文
519 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hoojo 2010-05-28
  • 打赏
  • 举报
回复
可以用隐藏表单域赋值
<input type="hidden" name="uploadInfo" value="...."/>
passself 2010-05-28
  • 打赏
  • 举报
回复
只能用ie的插件,而且只能在本机用,在网上不允许
robin_hood2012 2010-05-28
  • 打赏
  • 举报
回复
不行,这有安全限制
z109876543210 2010-05-28
  • 打赏
  • 举报
回复
用swf上传
xk029 2010-05-28
  • 打赏
  • 举报
回复
高手出现啦
孟子E章 2010-05-28
  • 打赏
  • 举报
回复
var WshShell=new ActiveXObject("WScript.Shell");在网上是没人敢用的。
你可以做个专用的客户端插件吧,可以传目录

87,901

社区成员

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

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