表单POST以大容量提交数据

微软建议使用request.binaryread(读)形式的数据,但该方法读取二进制数据,需要读取数据逐字节的字符串分析,生成有意义的(MSDN的程序,但它没有考虑诸如标点字符进行转义特殊分析的需要)。如果这个方法纯英语系统勉强可用,中国的系统有很大的困难,因为汉字是由两个字节来表示,和二进制数据读取本身并不能判断是英文或中文字符(或不按二进制数,但字符串。)。这样,就有必要了解汉字编码规则进行分析。最后,即使算法可以将所有的这些分析,我们不一大串的字节MB水平是分析,它的效率所以,这不是办法!
然而,总会有办法的。起初我以为整个表单数据的总和不超过100KB,后来发现它是每个域限内形成的。这个问题的解决方案是一个域需要发送大量的数据。提交表单之前,将数据拆分为小于配额号,该数被放在几个隐藏域中。同时,原来的域名是清空并正式提交表单。服务器端读取每个隐藏域请求数据。形式()和接合在一起的订单。主要代码如下:
注意:您需要在表单中指定HTML代码中的div,以便动态地将隐藏域插入其中。
=客户机示例代码
复制代码代码如下所示:

/ /数据分区,并提出相应的隐藏字段,在形式的onsubmit事件激发
fnprehandle()函数
{
无功多; / /分裂成许多领域
无功strdata; / /原始数据
无功imaxchars = 50000; / /考虑到双字节汉字,最大字符数限制为50K域
无功ibottleneck = 2000000; / /如果文章超过2M,提示用户
无功strhtml; / /原始数据
strdata = frmtest.bigfield.value; / /如果文章太长,需要提醒用户
如果(strdata.length > ibottleneck)
{
如果(确认)您将要发布的文章太长,建议您将其拆分成几个部分并单独发布。如果你坚持投稿,提交成功要花很长时间。坚持服从
返回false;
}多= parseInt(strdata.length / imaxchars)+ 1; / / hdncount多少子域分解在原始数据域的记录
strhtml = ; / /每个子域的HTML代码生成
对于(var i = 1;i < iCount;i++)
{
strhtml = strhtml + ;
} / /形式div(divhidden)在隐藏域动态插入HTML代码
document.all.divhidden.innerhtml = strhtml; / /每个子域的分配
对于(var i = 1;i < iCount;i++)
{
frmtest。元素{hdnbigfield+我}。值= strdata.substring((I - 1)* imaxchars,我imaxchars);
原始数据域为空
FrmTest.BigField.value = ;
}
U3000 U3000

的示例代码
复制代码代码如下所示:
<
昏暗的strdata
昏暗的intfieldcount
昏暗的iintfieldcount =请求。形式(hdncount )为I = 1 intfieldcount
strdata = strdata请求。形式(hdnbigfield 我)
NextResponse写strdata。
%>