怎么模拟点击网页上的一个javascript按钮?

Mlib 2013-10-14 02:34:40
有一个上传图片的网页,但每次只能上传一张图片。我想通过脚本或者什么方式自动上传一大堆图,我该用什么样的方式?(语言最好是java吧,脚本的话随便了)

下面是网页的截图和源代码,超级简单的页面。
网页截图先来个:


========>源代码放到下面的二楼吧!谢谢大家!!!
...全文
771 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
dralion 2013-10-16
  • 打赏
  • 举报
回复
可以用三方插件? 试试uploadify
Mlib 2013-10-15
  • 打赏
  • 举报
回复
嗯,谢谢大家了。web这方面我懂得太少了,不过基本思路有了哈哈 ============================ 等两天再结贴吧,能集思广益@_@!
c10682 2013-10-14
  • 打赏
  • 举报
回复
浏览器的file控件是不能指定文件路径,但通过API钩子就行了,下面是用 AAuto 写的一个示例
import win.ui;
import web.form;
/*DSG{{*/
var winform = win.form(parent=...; bottom=523;scroll=1;right=744;text="演示表单上传控件赋值";cls="DLG_WEB" )
winform.add(  )
/*}}*/
 
var wb = web.form( winform ); //创建web窗体
wb.html =/***
<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml">
<head> 
<title>演示表单上传控件赋值</title>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
</head>

<body>
<form id="form1" name="form1" enctype="multipart/form-data" method="post" action="">
  <label for="upload0"></label>
  <input type="file" name="upload0" id="upload0" />
</form>
<p>文件上传控件的值是只读的,不能修改.<br />
这里使用AAuto中的raw.hookApi创建一个函数钩子,拦截网页对文件对话框的调用,<br />
并直接返回我们预设的值即可。</p>
</body>
</html> 
***/ 
winform.show() //显示窗体 
wb.wait();//等待打开
  
//导入函数钩子支持库
import raw.apiHook;

//声明钩子需要用到的结构体
class OPENFILENAMEW{ 
   INT structSize;
   INT hwndOwner;
   pointer instance ;
   pointer filter;
   pointer customFilter;
   INT maxCustFilter;
   INT filterIndex;
   pointer file ;
   INT maxFile;
   pointer fileTitle;
   INT maxFileTitle;
   pointer initialDir;
   pointer title;
   INT flags;
   WORD fileOffset;
   WORD fileExtension;
   pointer defExt;
   pointer lCustData;
   pointer lpfnHook;
   pointer lpTemplateName;
   pointer pvReserved;
   INT dwReserved;
   INT flagsEx; 
}   
 
//安装API钩子
hookGetOpenFileNameW = raw.apiHook("comdlg32.dll", "GetOpenFileNameW", "int(pointer)", 
	function (pfn) { 
    	var oldofn = raw.convert(pfn ,OPENFILENAMEW() );
    	path = ..string.toUnicode( io._exepath ); //注意必须是确实存在的路径
    	::CopyMemory(  oldofn.file,path,#path ); 
 	
    	winform.setTimeout(
        	function(){
        		//用完立即卸载钩子,但是这里必须用一个异步的延时函数,让钩子函数可以先返回再销毁
            	hookGetOpenFileNameW.unInstall();
        	},1
    	)    
    	return 1;
	} 
).install();
 	
/** <INPUT class=text3 type=file name=upload0> **/
var ele = wb.getEle("upload0")  
ele.click()

//进入消息循环
win.loopMessage(); 
不过如果是批量上传文件的话,不需要这么复杂,其实上传也就是一个简单的POST,用AAuto写个自动上传文件的示例:
import inet.http;
import web.uploadData;

//创建测试文件
string.save("/test.txt","测试文件" ,true)

//创建上传数据
var formdata = web.uploadData("username=用户名&password=密码","上传字段名","/test.txt")

//自动上传文件
var rp = inet.http().post("http://test.aau.cn/aauto/test/post/"
    , formdata.data ,formdata.header );

io.open()
io.print( rp )
未知数 2013-10-14
  • 打赏
  • 举报
回复
引用 3 楼 u010983881 的回复:
[quote=引用 2 楼 wzs_xyz 的回复:] 可以使用falsh上传,支持一次选择多个文件;高版本浏览器file框也能支持多选文件自动 自动上传不符合web安全性要求,上传的文件必须是用户选择,无法用代码指定
这么说这个网页这么写的原因是因为web规范要求限制么? 不能通过代码来实现自动化了啊?[/quote] 我说的是无法实现由代码指定文件 这儿要的多文件选择和上传高版本浏览器的file框是支持的,要兼容的话也可以用flash上传
Mlib 2013-10-14
  • 打赏
  • 举报
回复
引用 2 楼 wzs_xyz 的回复:
可以使用falsh上传,支持一次选择多个文件;高版本浏览器file框也能支持多选文件自动 自动上传不符合web安全性要求,上传的文件必须是用户选择,无法用代码指定
这么说这个网页这么写的原因是因为web规范要求限制么? 不能通过代码来实现自动化了啊?
未知数 2013-10-14
  • 打赏
  • 举报
回复
可以使用falsh上传,支持一次选择多个文件;高版本浏览器file框也能支持多选文件自动 自动上传不符合web安全性要求,上传的文件必须是用户选择,无法用代码指定
Mlib 2013-10-14
  • 打赏
  • 举报
回复
二楼放个源代码,顺便占个楼,哈哈谁叫人气这么低呢

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

	<head>
		<meta http-equiv="content-type" content="text/html;charset=utf-8" />
		<script src="/jquery.js" type="text/javascript"></script>
		<title>照片保险柜 - Wifi传输</title>
		<style>
		  * {padding:0;margin:0;}
			body {margin:0;font: normal 12px Arial, Verdana, Tahoma; color:#333;background: #F0F0F0 url("bg.png") 50% 0 fixed repeat;}
			#main {width:800px;margin:0 auto;}
            #info {font:italic bold 12px/20px arial,sans-serif;}
			#header{background: transparent url(titlebg.png) repeat-x;border-top: 1px solid #dcdcdc;height:100px;}
			form.upload {margin-left:12px;padding-left:48px;padding-top:8px;margin-top:40px;height:32px;}
			table {width:100%;padding:0;border-bottom: 1px solid #fff;}
			thead {margin:0;padding:0;}
			th {height:15px;text-align: left;padding-left:20px;border-left:1px solid #999;border-bottom:1px solid #999;color:#303;font-size:.9em;font-weight: normal;background: transparent url(theadbg.png) repeat-x;}
			td.del, th.del {width:8em;}
			tbody td {padding-left:20px;background-color:#fff;height:20px;border-bottom: 1px solid #ccc;}
			tr.shadow td{background-color:#ecf3fe;}
			a.file {text-decoration:none;color:#333;}
			#footer {height:80px;border-top:1px solid #ccc;margin:0 auto;position:absolute;bottom:0px;width:800px;text-align: center;}
			#footer .content {border-top: 1px solid #fff;}
		.mydiv{ 
			HEIGHT: 650px; border:#909090 1px solid;background:#fff;color:#333; 
			filter:progid:DXImageTransform.Microsoft.Shadow(color=#909090,direction=120,strength=4);/*ie*/ 
			-moz-box-shadow: 2px 2px 10px #909090;/*firefox*/ 
			-webkit-box-shadow: 2px 2px 10px #909090;/*safari或chrome*/ 
			box-shadow:2px 2px 10px #909090;/*opera或ie9*/ 
		} 
		.div1{
		width:65%;position:relative;  BORDER-LEFT: #000000 1PX DASHED; BORDER-RIGHT: #000000 1PX DASHED; BORDER-TOP: #000000 1PX DASHED; BORDER-BOTTOM: #000000 1PX DASHED
		 ;margin-left:50px;margin-right:auto;
		 }
		</style>
		<script type="text/javascript">
	function checkFileName(){
	
	var filepath = document.getElementById("newfile").value; 
	if(filepath==''){
	 alert("请选择文件");
	 return false;
	}
	var re = /(\\+)/g; 
	var filename=filepath.replace(re,"#"); 
	var one=filename.split("#"); 
	var two=one[one.length-1];
	var three=two.split(".");
	var last=three[three.length-1]; 
	var tp ="mp4,mov,m4v,png,jpg,MP4,MOV,M4V,PNG,JPG";
	var rs=tp.indexOf(last);
	
	if(rs>=0){
	 return true;
	 }else{
	 alert("请选择有效文件!");
	 return false;
  }
  return false;
	}
		</script>
	</head>

	<body>
		<div id='main' class="mydiv">
			<div id='header'  >
		<form action="/files" enctype="multipart/form-data" method="post" class='upload' onSubmit="return checkFileName();">
			<label>选择照片或视频:</label>
			<input id="newfile" name="newfile" size="40" type="file" />
			<input name="commit" type="submit" value="Upload" class='button'  />
		</form>
		</div>
     
		 <div id='info' class="div1"  >
        视频格式为 mp4、mov、m4v. 照片格式为:png、jpg.<br/>
            联系方式:<br/>
            Email: sffofn@gmail.com <br/>
            博客 : http://cococai.blogcn.com <br/>
            新浪微博: http://weibo.com/2198540112 <br/>
        </div>
	
		<script type="text/javascript" charset="utf-8">
		var now = new Date();
		$.getJSON("/files?"+ now.toString(),
		function(data){
		  var shadow = false;
		  $.each(data, function(i,item){
		    var trclass='';
		    if (shadow)
		      trclass= " class='shadow'";
			encodeName = encodeURI(item.name).replace("'", "'");
		  $("<tr" + trclass + "><td><a href='/files/" + encodeName + "' class='file'>" + item.name + "</a></td>" + "<td class='del'><form action='/files/" + encodeName + "' method='post'><input name='_method' value='delete' type='hidden'/><input name=\"commit\" type=\"submit\" value=\"Delete\" class='button' /></td>" + "</tr>").appendTo("#filelist");
		    shadow = !shadow;
		  });
		});
		</script>
		<div id="footer" class="mydiv">
		  <div class='content'>
		  <br/><br/>Copyright (c) 2011 coco Cai
		  </div>
		</div>
		</div>	   
	</body>

</html>

87,910

社区成员

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

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