时间: 2021-07-31 作者:daque
在把洪量的xml动作post数据的一局部发送给你的iis效劳器的功夫——诸如在asp表单的textarea里——你大概会获得少许没有预猜测的截止。当数据在效劳器上被处置的功夫,因为你处置数据办法的各别,你最后大概会碰到缺点。其因为是,当你把数据提交回效劳器的功夫,post字段里有一个(数据)巨细的控制。如许做的手段是为了提防大概的侵犯者在实行中断效劳(denial of service,dos)的报复中向效劳器发送超洪量的数据。
这一控制也牵制你的本领。然而有方法处置这个题目。即使你没被控制在只不妨经过form提交来发送数据,那么你就不妨运用xmlhttp东西(微软的xml集里的一个dom东西)来发送所须要的xml: var oxmlhttp = new activexobject("microsoft.xmlhttp");oxmlhttp.open("post", "xml_handler.asp", false);oxmlhttp.send(xml_to_send); 因为request东西会实行istream接口,以是你不妨经过运用domdocument东西的load()本领来加载所要提交的xml: dim odomset odom = server.createobject("msxml2.domdocument")odom.load request 即使你被控制在只不妨运用form提交,那么你不妨经过提交多个textarea大概input来超过这一控制,前方两者在效劳器一接受到这个form数据的功夫就不妨被从新拉拢在一道: var maxlen = 90000;var oform = document.createelement("form");oform.method = "post";oform.action = "xml_handler.asp";oform = document.body.appendchild(oform);var s = document.someform.txtxml.value;if (s.length > maxlen) { while (s.length > maxlen) { var o = document.createelement("input"); o.type = "hidden"; o.name = "txtxml"; o.value = s.substr(0, maxlen); oform.appendchild(o); s = s.substr(maxlen); } var o = document.createelement("input"); o.type = "hidden"; o.name = "txtxml"; o.value = s.substr(0, maxlen); oform.appendchild(o);} else { var o = document.createelement("input"); o.type = "hidden"; o.name = "txtxml"; o.value = s; oform.appendchild(o);} 这一段代码会创造一个新的form元素,用来处置数据的提交,并将它安置到body元素内。而后,它会查看行将提交给效劳器的xml的长度。这个xml驻留在someform里面一个叫作txtxml的textarea里。
即使这个xml大于90,000字符的maxlen,那么这段代码就会创造多个湮没的input(输出)元素,并把值的属性树立为90,000个字符的xml数据,大概树立为xml尾部的某个值,进而将这个数据分隔成多个局部。即使这个xml的巨细小于maxlen,那么这段代码就只会创造一个input并相映地树立值。而后这个数据就被提交到效劳器供处置。
你大概仍旧提防到,我把沟通的称呼——txtxml——指定给新表单的每个字段。这将无助于于把xml数据同其余大概会被提交的数据分割飞来,并为重组xml数据供给了一种大略的办法。在重组数据的功夫,你须要一个大略的轮回来贯穿字段里的数据: dim str, fldfor each fld in request.form("txtxml") str = str & fldnext 因为仍旧为每个form元素都创造了一个字段集,以是你不妨在同一个称呼的字段里迭代。只有以符合的程序在存户端创造form元素,你就不须要担忧字段被遍历的程序。经过form的appendchild()本领,这不妨被简单地实行。
数据在存户端是依照从左到右、从上到下的程序被提交的,以是当你把input元素附加到form元素尾部的功夫,在你效劳端也老是依照同样的程序来接受数据的。
即使你正在寻务实现一个巨型的数据处置计划,比方将洪量的excel数据从存户呆板传播到效劳器上,那么你就该当从新商量能否要运用form提交,大概将数据从论理上分红多个小的局部。因为你没辙运用文献典型input元素,以是最具备创作力的处置计划是将数据在当地变化变成xml,再将xml数据提交给效劳器。反过来,数据会生存在效劳器上,直到须要更进一步处置。
固然,处置这个题目大概会有更好的本领。然而当你没有太多功夫的功夫,你所须要的即是一个赶快的、可用的处置计划。