如何给<input type="file" id="uploadFile" />赋值

 我来答
某某知识博士
2016-04-10 · TA获得超过1.4万个赞
知道大有可为答主
回答量:3522
采纳率:85%
帮助的人:1151万
展开全部
今天一个朋友问我,如何在页面上自动给<input type="file"/>赋值,这个问题我以前也没实现过,今天小研究了一把. 把<input type="file"/>设计只读且不允许自动赋值的目的是出于安全性考虑,试想一下,如果允许程序自动赋值,那么也可以在服务器生成页面时放置一段脚本,在浏览器访问该页面后,自动把本地的某一个重要文件路径赋值到一个文件上传控件,然后自动上传到服务器,那会是多可怕的事情!! 一个恶意网站就可以把我们机器上的一些机密文件神不知鬼不觉地盗走了. 既然不允许赋值,在有些情况下又要求实现文件自动上传,到底能不能实现呢? 有一种办法,就是模拟键盘输入来达到赋值的目的,先贴代码:

<input name="myfile"type="file"/>

<script language="JavaScript">
window.attachEvent("onload", setfile);
var WshShell=new ActiveXObject("WScript.Shell");
function setfile(){
for(i=0;i<4;i++) {
setTimeout('document.all.file['+i+'].focus();
WshShell.sendKeys('+i+');',i*20);
}
}
</script>
这段代码是通过WScript.Shell控件来实现模拟键盘输入的效果: WshShell.sendKeys('+i+'); 在模拟键盘输入之前,先把光标定位在要操作控件上: document.all.file['+i+'].focus(); 在给下一控件赋值之前,先停一段时间: setTimeout('document.all.file['+i+'].focus();

WshShell.sendKeys('+i+');',i*20); 这样做的目的是因为focus操作花费的时间比较长,而sendKeys操作又很快,如果不加上延时,sendKeys操作一般都在focus之前就执行完了,导致输入框接收不到输入值。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式