用XMLHTTP实现远程POST上传本地图片

我们一般是用form表单在提交,那如果用程序自动提交呢
这儿提供一个类,代码见内页,使用方法如下:

	Set UploadData = New XMLUpload
	UploadData.Charset = "GB2312"
	UploadData.AddForm "domain", "test.com" '创建普通的文本参数
	UploadData.AddForm "act", "do" '同样
	UploadData.AddFile "mypic", "0.jpg", "image/pjpg", "C:\1.jpg" '创建一个文件域,名字为mypic,路径为c:\1.jpg,其他可随意
	Call UploadData.Upload("/do.asp") '提交到哪儿
	Set UploadData = Nothing

, , , , ,

jquery表单提交函数

//这是我自己写的一个表单post信息组成函数,支持一下原创撒

function jquerypoststr(_thisfrom){
	var poststr="";
	var tmpcval="";
	_thisfrom.find("input[type='hidden'][name],input[type=password][name],input[type=text][name],textarea[name],input[type=radio][name]:checked,select[name]").each( function(index){
		poststr += "&"+this.name+"="+escape( $(this).val() ).replace(/\+/ig,"%2B");
	});
	_thisfrom.find("input[type=checkbox][name]").each( function(index){
		tmpcval=""; 
		if ( $(this).attr("checked") ) {
			tmpcval = escape(this.value).replace(/\+/ig,"%2B");
			poststr += "&"+this.name+"="+tmpcval;
		}
	});
 	return poststr.substring(1);
}

, , ,

关于xmlhttp方式模拟登录问题

今天没事又弄了下远程调用网页文件。我用的是asp来模拟登录,然后拉取需要的信息。
后台登录一直不成功,普通用户后台是可以成功的,最后才知道原因,写这里分享下以免走弯路。
如果服务端用了Cookies验证,那直接POST登录信息,然后再调其他页就可以。

而超管后台往往用的是Session验证,所以直接POST登录信息后,虽然能返回正确,但接着去拉取其他页面会发生错误,原因是拉取时没有设置Cookie头。我们应该拉取一下后台,用 ajaxHttp.getResponseHeader("Set-Cookie") 得到COOKIES值,然后POST时也将此信息写进去,以后在拉取其他页时也要写。 ajaxHttp.SetRequestHeader "Cookie",reCookie
服务器上只要session不掉,你以后直接发送这个cookies就可以保持连接,而不必POST登录信息了。
asp的cookies形式如:ASPSESSIONIDSACCQQDR=DLHNPNPCJFJNGJIFHCMNHGCL 但.net的就不同了哦。

, ,