JS实现Html File控件赋值

网上搜索了半天也没有完整的解决方案。
用以下方法需要添加到信任站点或解除未签名的ActiveX控件的禁用

 

1. 模拟键盘输入法: 不足的地方是不支持中文

    把<input type="file" />设计只读且不允许自动赋值的目的是出于安全性考虑,试想一下,如果允许程序自动赋值,那么也可以在服务器生成页面时放置一段脚本,在浏览器访问该页面后,自动把本地的某一个重要文件路径赋值到一个文件上传控件,然后自动上传到服务器,那会是多可怕的事情!! 一个恶意网站就可以把我们机器上的一些机密文件神不知鬼不觉地盗走了.
    既然不允许赋值,在有些情况下又要求实现文件自动上传,到底能不能实现呢? 有一种办法,就是模拟键盘输入来达到赋值的目的,先贴代码:

 

<input name="myfile" type="file" />    
   
<script language="JavaScript">    
window.attachEvent("onload", setfile);     
var WshShell=new ActiveXObject("WScript.Shell");     
function setfile(){      
    setTimeout('document.all.myfile.focus();WshShell.sendKeys("C:/java/sdfs/11/11.jpg");',20);        
}    
</script> 

 

    这段代码是通过WScript.Shell控件来实现模拟键盘输入的效果:
    WshShell.sendKeys("C:/java/sdfs/11/11.jpg");
    在模拟键盘输入之前,先把光标定位在要操作控件上:
    document.all.myfile.focus();
    在给下一控件赋值之前,先停一段时间:
    setTimeout('document.all.myfile.focus();WshShell.sendKeys("C:/java/sdfs/11/11.jpg");',20);
    这样做的目的是因为focus操作花费的时间比较长,而sendKeys操作又很快,如果不加上延时,sendKeys操作一般都在focus之前就执行完了,导致输入框接收不到输入值。


 

2. 把文件先复制到剪切再粘贴到Input File 控件中,可以解决中文问题


项目需求是自动搜索客户端的图片,找到合适的自动上传(理论上能上传任何东西)前提就是上面提到的.
用这个方法经测试成功.上传OK!(注意不安全哟,不要用此做坏事哟,此源码只做交流,请不要用于非法用途)

大概写一下流程:

<HTML>
 <HEAD>
  <TITLE> 冲击多个Input File赋值兼解决中文赋值问题 </TITLE>
<SCRIPT LANGUAGE="JavaScript">
//简化写法
function $(id)
{
    return document.getElementById(id);
}
//崋值方法(就是将文本框的值赋值file对象)
function set1()
{
    //将text1中的值复制到剪贴板中
    window.clipboardData.setData('text',$('t1').value); 
    //创建Shell(需要添加到信任站点或解除未签名的ActiveX控件的禁用
    var   WshShell=new   ActiveXObject("WScript.Shell");  
    //拿到焦点
    $('f1').focus();
    //Ctrl + A 操作
    WshShell.sendKeys("^a");
    //Ctrl + V 操作(sendKeys对于中文赋值操作显得无力,所以只能模拟键盘操作)
    WshShell.sendKeys("^v");
}

function set2()
{
    window.clipboardData.setData('text',$('t2').value); 
    var   WshShell=new   ActiveXObject("WScript.Shell");  
    $('f2').focus();
    WshShell.sendKeys("^a");
    WshShell.sendKeys("^v");
}

function set3()
{
    window.clipboardData.setData('text',$('t3').value); 
    var   WshShell=new   ActiveXObject("WScript.Shell");  
    $('f3').focus();
    WshShell.sendKeys("^a");
    WshShell.sendKeys("^v");
}

function set4()
{
    window.clipboardData.setData('text',$('t4').value); 
    var   WshShell=new   ActiveXObject("WScript.Shell");  
    $('f4').focus();
    WshShell.sendKeys("^a");
    WshShell.sendKeys("^v");
}
//给当前网页中四个file对象赋值的方法
function set()
{
    //此处不要用循环,有几个就需要写几个setXX方法
    setTimeout("set1()",0);
    setTimeout("set2()",70);
    setTimeout("set3()",240);
    setTimeout("set4()",340);
}
//检查是否赋值成功
function check()
{
    //检查每个file对象是否为空 
    if($('f1').value.length > 0 && $('f2').value.length > 0 && $('f3').value.length > 0 && $('f4').value.length > 0 )
    {
        //检查原对象的值的赋值对象的值是否相同
        if($('f1').value == $('t1').value && $('f2').value == $('t2').value && $('f3').value == $('t3').value && $('f4').value == $('t4').value)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return false;
    }
}
//赋值和file对象的检查
function setValues()
{
    if(!check())
    {
        set();
    }
}
//直接调用的赋值方法
function callSet()
{
    //一定要用setInterval,而不能用循环(循环太快,会造成所有的值赋在一个file对象上)
    setInterval('setValues()',1000);
}

 </SCRIPT>
 </HEAD>

 <BODY>
    <input type=text value='c:\a好.jpg' id='t1' /> <br />
    <input type=text value='b:\b不好.jpg' id='t2'/> <br />
    <input type=text value='c:\c好.jpg' id='t3'/> <br />
    <input type=text value='d:\c很好.jpg' id='t4'/> <br />

    <input type=file id='f1'/> <br />
    <input type=file id='f2'/> <br />
    <input type=file id='f3'/> <br />
    <input type=file id='f4'/> <br />
    
    <input type='button' id='btn1' onclick='callSet();' value='测试'>
 </BODY>
</HTML>

 

3. 清空Input File 控件value属性值

 

在 HTML 文档中 ,<input type="file"> 标签是浏览器向服务器发送选中文件的。该元素有一个 value 属性,保存了用户指定的文件的名称,为安全起见,file-upload 元素的value 属性是只读的,不允许程序员修改它的值,并且HTML value 属性也会被忽略。不过有时候我们需要将这个标签的value的值清空,这就需要我们动动脑筋了。

假设我们已经得到了该file input的对象,为file_input_obj,下面是两种修改该标签value属性的方法:
方法一:
file_input_obj.outerHTML=file_input_obj.outerHTML.replace(/(value=\").+\"/i,"$1\"");
我们也可以根据这个思路,举一反三,比如先对该标签进行克隆,然后再替换掉该节点,等等,随便你怎么发挥都行。

方法二:
var WshShell=new ActiveXObject("WScript.Shell");
file_input_obj.focus();
file_input_obj.createTextRange().select();
WshShell.SendKeys("{del}");
使用这中方式,需要允许ActiveX控件,所以推荐使用第一个方法

这既解决了我们遇到的问题,同时也为我们提供了一种解决问题方式,我们可以用类似的方法去解决类似的问题。

 

 

本文转自:http://www.blogjava.net/supercrsky/archive/2008/09/05/227275.html

               http://blog.youkuaiyun.com/lizhihai_99/archive/2010/04/27/5533915.aspx

               http://hi.baidu.com/78347079/blog/item/5ef6457793c0fc13b151b933.html

 

MATLAB App Designer图片与HTML控件实战:从本地加载到网页嵌入 图形用户界面(GUI)是连接用户与软件功能的重要桥梁,其核心在于提供直观、高效的交互体验。在技术实现上,GUI通过控件(如按钮、文本框)接收用户输入并展示处理结果。随着应用复杂度的提升,传统控件在呈现丰富内容(如图像、动态图表、网页)时面临局限。为此,现代开发环境引入了专用视觉组件,例如图片控件用于静态/动态图像显示,支持多种格式;HTML控件则内嵌浏览器引擎,能渲染网页、执行脚本,并与后端进行数据通信。这些技术的价值在于显著提升界面的专业度和交互能力,尤其适用于数据可视化、仪表盘和集成Web资源等场景。本 阅读详情

相关推荐

MATLAB App Designer中Image与HTML控件的正确使用指南

在MATLAB App Designer界面开发中,控件选择直接影响功能实现与用户体验。Image控件专用于加载和显示本地图片文件,通过设置Source属性指定路径即可渲染图像,适用于静态图片展示场景。HTML控件则是一个内嵌的微型浏览器引擎,能够解析和渲染HTML代码、CSS样式及JavaScript,支持动态内容生成与交互。从技术原理看,Image控件本质是图像数据渲染器,而HTML控件基于Web技术栈实现内容呈现。在工程实践中,正确选择控件能避免常见问题:Image控件需注意文件路径和格式兼容性,HT

weixin_33682790的博客 306

js给file类型的input框赋值_数据类型和变量用Python做数学运算

1.变量----保存内容的地方变量名---以字母为开头,其他的字符必须是字母、数字、下划线,区分大小写,中文也可以,但不推荐。举例my_name = "Bryson"my_age = 43your_name = input("What is your name? ")your_age = input("How old are you? ")print("My name is", my_...

weixin_42332123的博客 1566

JavaScript File对象的方法

JavaScript中的File对象是用于处理文件的客户端API之一。它提供了许多方法,用于操作和获取有关文件的信息。在本文中,我们将介绍File对象的一些常用方法,并提供相应的源代码示例。这些是File对象的一些常用方法。使用这些方法,您可以轻松地获取和操作文件的各种属性和内容。请注意,上述示例中的。是一个文件输入框的DOM元素,您需要根据实际情况进行相应的修改和适配。希望本文对您有所帮助!

PixelLancer的博客 366

用JS为 <input type=file>的value属性动态赋值

用JS为 的value属性动态赋值 在 HTML 文档中 , 标签是浏览器向服务器发送选中文件的。该元素有一个 value 属性,保存了用户指定的文件的名称,为安全起见,file-upload 元素的value 属性是只读的,不允许程序员修改它的值,并且HTML value 属性也会被忽略。不过有时候我们需要将这个标签的value的值清空,这就需要我们动动脑筋了。 假设我们已经得到了该...

mickey188的博客 7317

input file的默认value清空与赋值方法

出于安全性考虑,JS是不能直接设置File的value值的,下面是我总结出来的方法

MATLAB实战:用ARMAX模型搞定电力系统惯量评估(附完整代码)

本文详细介绍了如何利用MATLAB中的ARMAX模型进行电力系统惯量评估,解决新能源占比提高带来的系统惯量下降问题。通过系统辨识技术,从电网运行数据中准确提取惯量参数,并提供完整的代码实现,帮助工程师快速应用于实际工程。

peach的博客 636

JS实现Html File控件赋值 【转】

文章出处:JS实现Html File控件赋值 网上搜索了半天也没有完整的解决方案。 用以下方法需要添加到信任站点或解除未签名的ActiveX控件的禁用   1. 模拟键盘输入法: 不足的地方是不支持中文     把设计只读且不允许自动赋值的目的是出于安全性考虑,试想一下,如果允许程序自动赋值,那么也可以在服务器生成页面时放置一段脚本,在浏览器访问该页面后,自动把本地的

踏歌行的专栏 1万+

雷达回波仿真

文章目录前言一、基础理解1.慢时间维度和快时间维度2.脉冲压缩3.MTI4. 脉冲多普勒处理5.cacfar检测二、具体流程1.产生回波信息加入目标时延以及噪声2.解调回波得到基带信号3.脉冲压缩 MTI MTD cafar检测 前言 雷达算法仿真学习,主要流程包括生成目标回波,将基带信号加在载波上其次是加上目标信息和干扰信号后发射,解调回波信号得到基带信号然后MTI,MTD,最后再检测。 一、基础理解 1.慢时间维度和快时间维度 连续M个脉冲回波经过相干解调之后的基带数据形成的一个二维数据矩阵,.

qq_42961235的博客 1万+

html选择文件夹控件,File文件控件,选中文件(图片,flash,视频)即立即预览显示

我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的。那怎么进行无刷新预览呢?这里我把我所使用的方法写一下。选择页面:function checkData(){var fileName=document.getElementById("FileUp").value;if(fileName=="")re...

weixin_33925615的博客 2085

UVM和System verilog笔记总结(四)

virtual sequence 即虚seq,用于管理多个实sequence的执行顺序。 下面有三个sequence,此时需要virtual sequence去管理这三个的顺序。 virtual sequence和virtual sequencer需要成对写,使用例化实的sequence和sequencer控制: 此时在virtual sequence里面启动,而不是之前在test.sv里面用default或start函数启动。具体方法如下:先例化 再启动,用 `uvm_do_on 实sequence

weixin_42655118的博客 642

Pcileech(DMA)开源项目简述

希望大DMA家能正确认识FPGA,正确使用DMA技术,对于市场上各类伪装成花里胡哨设备的FPGA板卡它的本质是不会变的,不要上当受骗。

2301_79773847的博客 5959

用JS替 <input type=file>的value属性动态赋值

用JS替 <input type=file>的value属性动态赋值 提问者: sxy274096555     发布时间:2014-04-22     浏览:28     回复:0     悬赏:0.0希赛币 用JS为 的value属性动态赋值 用JS为 的value属性动态赋值 在 HTML 文档中 , 标签是浏览器向服务器发

kendyhj9999的专栏 3万+

74HC138译码器的原理和使用

A0,A1,A2为3位二进制加权地址输入端口,A2A1A0顺序组成的3位2进制数对应的十进制数x控制使能端口Yx';例如当A2A1A0 = 101 时,其他门输出端全为高电平,只有Y5'为低电平。 Y0-Y7为8个输出端口,其输出电平由A0,A2,A3,E1,E2,E3决定。

diksan的博客 6万+

html file 文件类型 赋值到img,File文件控件,选中文件(图片,flash,视频)即立即预览显示...

我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的。那怎么进行无刷新预览呢?这里我把我所使用的方法写一下。选择页面:function checkdata(){var filename=document.getelementbyid("fileup").value;if(filename=="")re...

weixin_35457966的博客 737

ubuntu20.04中配置Pyrep和CoppeliaSim

在Ubuntu20.04中配置 Pyrep ,实现应用Python语言的机器人在 Vrep(CoppeliaSim)中的虚拟仿真。

加斯顿工程师的博客 3374

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 268

js input file 赋值_作为后端如何快速掌握Vue.js?

如果说是JQuery是手工作坊,那么Vue.js就像是一座工厂,虽然Vue.js做的任何事情JQuery都可以做,但无论是代码量还是流程规范性都是前者较优。看完本篇,你将会掌握基本的Vue.js知识。准备首先,以下几点希望你已经知道或者做到了:你会用html+css+javascript 写一些网页你知道什么是DOM和BOM(Browser Object Model)你知道Vue.js是一个框架而...

weixin_39633891的博客 121

手把手教你用 Cursor 写一个完整的 Web 应用(含前后端 + 部署)

本文介绍如何利用Cursor AI工具从零开发一个完整的全栈待办事项Web应用。文章针对开发者常见痛点——无法独立完成项目闭环,提供了一套AI驱动的全栈开发范式。通过Vue3+Node.js+MySQL技术栈,全程由Cursor自动生成项目架构、前后端代码、数据库设计,并解决联调、部署等关键问题。重点展示了如何用AI完成:项目规划与架构设计、后端接口开发、前端页面实现、跨域联调、打包优化及云端部署全流程。该方法将传统需要3-5天的开发工作压缩至1小时内完成,产出规范可上线的项目,特别适合想突破"碎

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 633

html中form表单的赋值,Html表单中遇到的问题

大纲1、表单提交的方式GET和POST的区别2、js无法对input的file类型的值进行赋值3、js获取input中的value值为什么总是字符串4、只读表单控件的另类设置 ==readonly推荐1、表单提交的方式GET和POST的区别从本质上来说,GET提交就是在URL后跟上页面提交的表单信息,而POST后什么都没有跟。因此就产生了区别:1、GET的保密性相对于POST来说会低很多2、GET...

weixin_35744067的博客 872

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

File文件控件,选中文件(图片,flash,视频)即立即预览显示

    继续总结广告项目里的一些小TIP,我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的。那怎么进行无刷新预览呢?这里我把我所使用的方法写一下。选择页面:function checkData(){  var fileName=document.getElementById("FileUp").v

『 李天平的博客 』 4822

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

清除HTML file控件value属性值

上午在做东西的时候需要清除file控件的value值,采用传统的处理方式(即直接将file控件的value值赋值为""),在FF和Chrome浏览器下都可以正常清除,但在IE下是无法清除的。         可通过以下方法清除: var

tony的专栏 4858

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

MATLAB App Designer图片与HTML控件深度应用指南

图形用户界面(GUI)开发是提升软件交互体验的关键技术,其核心在于将数据与操作以直观方式呈现给用户。在MATLAB App Designer环境中,开发者常面临如何灵活展示多样化内容的技术挑战,特别是图片加载与HTML内容嵌入。通过深入解析Image控件与隐藏的HTML(uihtml)控件的工作原理,可以实现从静态图片显示到动态网页内容渲染的功能扩展。Image控件适用于基础图片展示,而HTML控件则基于嵌入式浏览器内核,支持完整的HTML/CSS/JavaScript渲染与双向数据通信,技术价值在于极大丰

weixin_34302798的博客 423

冲击多个Input File赋值兼解决中文赋值问题

网上搜索了半天也没有完整的解决方案。 用此方法需要添加到信任站点或解除未签名的ActiveX控件的禁用 项目需求是自动搜索客户端的图片,找到合适的自动上传(理论上能上 传任何东西)前提就是上面提到的. 用这个方法经测试成功.上传OK!(注意不安全哟,不要用此做坏事哟, 此源码只做交流,请不要用于非法用途) 大概写一下流程: &lt;HTML&gt; &lt;HEAD&gt;  &lt;TITLE&...

上善若水 388

html上传视频选择文件,window_File文件控件,选中文件(图片,flash,视频)即立即预览显示,我们平常用file文件控件上传文 - phpStudy...

File文件控件,选中文件(图片,flash,视频)即立即预览显示我们平常用file文件控件上传文件,要预览有时会刷新页面,结果file控件被清空,好多人问能能让他不清空或重新赋值,因为处于安全性的考虑,这是不可能的。那怎么进行无刷新预览呢?这里我把我所使用的方法写一下。选择页面:复制代码 代码如下:function checkData(){var fileName=document.getEle...

weixin_31623707的博客 849
上一篇: JavaScript 匿名函数代码模式
下一篇: 神奇的JavaScript Function
javaRwx
博客等级 码龄20年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值