我的漫漫程序之旅

专注于JavaWeb开发
随笔 - 39, 文章 - 310, 评论 - 411, 引用 - 0
数据加载中……

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

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

项目需求是自动搜索客户端的图片,找到合适的自动上传(理论上能上
传任何东西)前提就是上面提到的.
用这个方法经测试成功.上传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>


posted on 2008-09-05 17:09 々上善若水々 阅读(7314) 评论(8)  编辑  收藏

评论

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

好思路 多谢了 长久以来 我也在考虑这个问题 多谢!
2008-09-08 15:22 | walnutprince

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

赋值是成功了,但是无法submit,会拒绝访问啊
2008-09-22 17:29 | Nickol

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

可以submit的。注意你安全设置问题。
2008-09-23 13:46 | 々上善若水々

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

赋值成功了,但是无法submit,提示拒绝访问?? 请问如何进行安全配置?
我已经将服务器IP加入 受信任站点 并将受信任站点的 安全级别设置为-低!!

谢谢!!
2009-03-31 17:03 | LCP

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

@LCP
在本地Internet中添加可信站点即可.
2009-04-01 13:16 | 々上善若水々

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

貌似IE8之后File标签都不支持手动输入了
2012-12-24 13:43 | ant

# re: 冲击多个Input File赋值兼解决中文赋值问题  回复  更多评论   

file类型只读的,怎么实现粘贴的?
2013-03-25 15:22 | nbuu

# re: 冲击多个Input File赋值兼解决中文赋值问题[未登录]  回复  更多评论   

我的只是焦点可以进去 为什么赋值会失败...
2014-11-09 11:07 |

只有注册用户登录后才能发表评论。


网站导航: