模拟post提交

lihan6839 2017-04-07 09:32:40
需要在java 里模拟web后台上传文件,并提交升级功能。下面是web后台的代码
有没有大神有思路,指点下



void upldForm(webs_t wp, char_t * path, char_t * query) {
FILE * fp;
char_t * fn;
char_t * bn = NULL;
int locWrite;
int numLeft;
int numWrite;
char fullfilename[256];
a_assert(websValid(wp));
websHeader(wp);
websWrite(wp, T("<head>"));
websWrite(wp, T("<meta http-equiv='Content-Type' content='text/html; charset=GB2312'>"));
websWrite(wp, T("<link href='/images/style.css' type='text/css' rel='stylesheet'>"));
websWrite(wp, T("<script language='Javascript' src='/images/misc.js'></script>"));
websWrite(wp, T("<title>upgrade</title>"));
websWrite(wp, T("</head><body>"));

fn = websGetVar(wp, T("filename"), T(""));
if (fn != NULL && *fn != '\0') {
if ((int)(bn = gstrrchr(fn, '/') + 1) == 1) {
if ((int)(bn = gstrrchr(fn, '\\') + 1) == 1) {
bn = fn;
}
}
}

websWrite(wp, T("<div class=HintText>Filename = %s<br>Size = %d bytes<br></div>"), bn, wp->lenPostData);
strcpy(fullfilename,"/tmp/");
if(bn)
strcat(fullfilename,bn);
else
strcat(fullfilename,"upldForm.bin");

memset(updatename,0,30);
strcat(updatename,uciread("uci get dtm.sys.updatename"));
if(strlen(updatename)==0){
strcat(updatename,"dgm_upgrade.gz");
}












if(strstr(bn, updatename)==NULL && strstr(bn,"dgm_upgrade.gz")==NULL){







websWrite(wp, T("<div class=HintText>%s<br></div>"),"updata");
websWrite(wp, T("<SCRIPT LANGUAGE='javascript'>"));
char buf2[100];
memset(buf2,0,100);

sprintf(buf2,"alert('ERROR:Upgrade file name must is *%s ')",updatename);
websWrite(wp, T(buf2));




websWrite(wp, T("</script>"));




}else{

char buf[50],buf1[50];
memset(buf,0,50);
sprintf(buf,"mv %s /tmp/dgm_upgrade.gz", fullfilename);
uciread(buf,buf1);


if ((fp = fopen(fullfilename, "w+b")) == NULL) {
websWrite(wp, T("File open failed!<br>"));
} else {
locWrite = 0;
numLeft = wp->lenPostData;
while (numLeft > 0) {
numWrite = fwrite(&(wp->postData[locWrite]), sizeof(*(wp->postData)), numLeft, fp);
if (numWrite < numLeft) {
websWrite(wp, T("<div class=HintText>File write failed.<br> ferror=%d locWrite=%d numLeft=%d numWrite=%d Size=%d bytes<br></div>"), ferror(fp), locWrite, numLeft, numWrite, wp->lenPostData);
break;
}
locWrite += numWrite;
numLeft -= numWrite;
}

if (numLeft == 0) {
if (fclose(fp) != 0) {
websWrite(wp, T("<div class=HintText>File close failed.<br> errno=%d locWrite=%d numLeft=%d numWrite=%d Size=%d bytes<br></div>"), errno, locWrite, numLeft, numWrite, wp->lenPostData);
} else {
websWrite(wp, T("<div class=HintText>File Size Written = %d bytes<br></div>"), wp->lenPostData);
/*upgrade*/
{
char line[256];
FILE *pfile=popen("/sbin/dgm_upgrade -f","r");
if(pfile==NULL)
websWrite(wp, T("<div class=HintText>upgrade failed<br></div>"));
else
{
while ( fgets( line, sizeof(line), pfile))
{
websWrite(wp, T("<div class=HintText>%s<br></div>"),line);
}
pclose(pfile);
}
//system("opkg install /tmp/*.ipk");
//system("rm /tmp/*.ipk");
//system("/sbin/dgm_upgrade -f");

}
websWrite(wp, T("<div class=HintText>%s<br></div>"),"updata");
websWrite(wp, T("<SCRIPT LANGUAGE='javascript'>"));
websWrite(wp, T("alert('upgrade complete')"));
websWrite(wp, T("</script>"));
}
} else {
websWrite(wp, T("<div class=HintText>numLeft=%d locWrite=%d Size=%d bytes<br></div>"), numLeft, locWrite, wp->lenPostData);
}
}

}

websFooter(wp);
websDone(wp, 200);
}
...全文
95 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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