87,910
社区成员
发帖
与我相关
我的任务
分享
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 )
<!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>