`

如何通过脚本给<input type="file">的控件赋值

阅读更多

    今天一个朋友问我,如何在页面上自动给<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&lt;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之前就执行完了,导致输入框接收不到输入值。

 

分享到:
评论
3 楼 szcjlssx 2009-09-19  
这个,还不如写个ActiveX上传控件呢,
楼主这个方法只能用在IE上,而IE本身又,,,,,,,
这样的实现岂不是.......
2 楼 wdmsyf 2009-09-17  
这种方式本来就是变态需求引起的。二楼有更优雅的解决办法吗?
1 楼 weiqingfei 2009-09-17  
繁琐,不安全。

相关推荐

    解析使用JS 清空File控件的路径值

    在网页开发中,File控件(`&lt;input type="file"&gt;`)经常用于用户选择本地文件上传至服务器。然而,由于安全原因,浏览器通常不允许JavaScript直接修改File控件的value属性,以防止恶意脚本篡改用户选定的文件。本文将...

    JavaScript操作文件_动力节点Java学院整理

    换句话说,直接通过脚本为&lt;input type="file"&gt;的value赋值是不允许的,这样做不会有任何效果。 要正确地上传文件,表单(form)必须包含enctype属性,并设置为multipart/form-data,同时method属性必须设置为post。...

    javascript 读取文本文件.rar

    3. Blob URL:如果需要在页面上预览文件内容,可以将File对象转换为Blob URL,然后赋值给`&lt;a&gt;`或`&lt;img&gt;`标签的`href`或`src`属性。例如,用`URL.createObjectURL(file)`生成Blob URL。 4. HTML5 文件API:除了...

    如何通过js实现图片预览功能【附实例代码】

    在这个实例中,`&lt;input type="file"&gt;`用于文件上传,让用户选择本地图片文件。 3. JavaScript:JavaScript是一种用于网页交互的脚本语言,可以用来实现各种前端功能,如事件处理、数据操作等。在这个例子中,...

    VB怎么为网页文本框赋值

    ### VB如何为WebBrowser控件中的文本框赋值 在Visual Basic(VB)编程环境中,为WebBrowser控件中的文本框赋值是一个常见的需求,尤其是在自动化网页操作或数据抓取等场景下。本文将详细介绍如何使用VB来实现这一...

    FrontEnd2020:2020年教育

    以及新的表单控件,如`&lt;input type="date"&gt;`, `&lt;input type="range"&gt;`等,提高了用户输入体验。 此外,HTML5还增强了图形处理能力,如`&lt;canvas&gt;`元素用于绘制2D图形,`&lt;svg&gt;`则提供了矢量图形的支持。这些功能使得...

    VBScript

    &lt;input type="button" value="点击我" onclick="ShowMessage()"&gt; ``` 在系统管理领域,VBScript借助Windows Script Host可以编写批处理脚本,自动化各种日常任务,如文件操作、注册表修改、系统服务控制等。例如,...

    轻松实现js图片预览功能

    然后把读取的结果(即图片的Data URL)赋值给`&lt;img&gt;`元素的`src`属性,实现图片的显示。 - **`if(file){ reader.readAsDataURL(file); }else{ preview.src=""; }`**:这里是一个条件判断,如果用户选择了文件,则...

    有图片预览功能的上传表单.rar

    在这个案例中,我们需要关注的是`type="file"`的`&lt;input&gt;`元素,它允许用户选择本地文件,包括图片。 接着,我们来看JavaScript(JS)的角色。JavaScript是实现动态效果和交互的关键技术,这里用于处理图片预览功能...

    php程序员面试题(含html、JavaScript、php和mysql)

    - 单选和多选可通过 `&lt;input type="radio"&gt;` 和 `&lt;input type="checkbox"&gt;` 实现。 - 下拉菜单的多选选项通过 `&lt;select multiple&gt;` 实现。 #### JSON使用 **问题:**有没有用过JSON?数据结构? **解析:**JSON...

    大名鼎鼎SWFUpload- Flash+JS 上传

     SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统&lt;input type="file" /&gt;标签的文件上传模式。 [编辑本段]SWFUpload...

    jQuery获取file控件中图片的宽高与大小

    通过给 file 控件添加一个 change 事件监听器,我们可以在用户选择一个文件后执行相应的操作。在事件触发时,首先检查 this.files 数组的第一个元素,即用户选择的文件。然后,创建一个新的 Image 对象,并且为其...

    VC ++ 与Execel VBA编程

    - **比较运算符**:如=、&lt;、&gt;、&lt;=、&gt;=、&lt;&gt;等。 - **逻辑运算符**:如And、Or、Not等。 - **连接运算符**:如&(用于连接字符串)。 ##### 数据类型 - **数值类型**:包括Integer、Long、Single、Double等。 - **...

    详细的EXCLVBA初步教程

    - 比较运算符: `=` (等于)、`&lt;&gt;` (不等于)、`&gt;` (大于)、`&lt;` (小于)、`&gt;=` (大于等于)、`&lt;=` (小于等于)。 - 逻辑运算符: `And` (与)、`Or` (或)、`Not` (非)。 ##### 3. 数据类型 - **常用类型**: - `Integer`:...

    VBScript chm

    VBScript提供了`FileOpen`、`FileClose`、`Input#`、`Write#`等函数进行文件读写操作。 10. **HTTP请求与响应**: 在服务器端,VBScript可结合ASP(Active Server Pages)技术,通过`Response`和`Request`对象...

    PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例

    成功上传后,服务器返回的JSON数据可以通过success回调函数处理,例如将返回的URL赋值给img标签的src属性来显示图片。 五、注意事项 在实际开发中,可能需要针对不同的浏览器和设备(比如手机和平板电脑)进行适配...

    LOTUS domino BS开发 页面元素执行顺序

    在某个实例中,WebQueryOpen代理给隐藏域`curFirstDept`赋值,但在页面的JavaScript(onload)事件中输出`curFirstDept`的值,却发现输出的是旧值。原因是隐藏域的加载在JavaScript执行之后,所以在JavaScript执行...

    matlab常用指令大全

    - **`&lt;=`**: 小于或等于 - **`&gt;=`**: 大于或等于 ##### 2.3 逻辑运算符 (Logical Operators) - **`&`**: 逻辑与 - **`|`**: 逻辑或 - **`~`**: 逻辑非 - **`xor`**: 异或 - **`any`**: 检查是否有元素满足条件 - *...

Global site tag (gtag.js) - Google Analytics