不帅 发表于 2015-1-16 23:16:39

ASP网站制作之怎样在Form域中Post年夜于100K字节的数据...

asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。数据怎样在Form域中Post年夜于100K字节的数据????


之前在事情中碰到一个成绩,当表单发送的数据量很年夜时,就会报错。查阅MSDN懂得到,缘故原由是微软对用Request.Form()可吸收的最年夜数据限定为100K字节。

微软倡议用Request.BinaryRead()读取表双数据,但因为这类办法读出的是二进制数据,必要对读出的数据逐字节举行剖析,天生成心义的字符串(MSDN上的一段程序就是如许写的,但它并没有思索诸如标点标记等本义字符必要举行特别剖析)。假如说这类办法关于纯英文体系委曲可用的话,则关于中文体系来讲就有极年夜的贫苦,由于汉字是用两个字节暗示的,而读出的二进制数据自己其实不能判别是英文仍是汉字(不然就不是二进制数据,而是字符串了^-^)。如许的话就必需懂得汉字的编码纪律才干举行剖析。最初,即便算法上能把这些都剖析出来,人人想一想关于一个MB级的巨型字符串逐字节举行剖析,其效力何如?以是,此路欠亨!

不外,举措老是有的。一入手下手我觉得是全部表双数据的总和不克不及凌驾100KB,厥后发明这是对表单内每一个域的限定。成绩的办理举措是,关于一个必要发送年夜数据的域,在提交表单前将数据拆分为小于限额的数份,分离放在数个hidden域中,同时把原有域清空,再正式提交表单。服务器端仍是用Request.Form()读取各hidden域的数据,再依照按次把他们拼接起来就好了。次要代码以下:

注重:必要在Form中的HTML代码内指定一个DIV,以便向个中静态拔出hidden域。

====客户端示例代码====
<scriptlanguage=javascript>
//数据拆分,并放到响应的hidden域中,在Form的onSubmit事务中引发
functionfnPreHandle()
{
variCount;//拆分为几个域
varstrData;//原始数据
variMaxChars=50000;//思索到汉字为双字节,域的最年夜字符数限定为50K
variBottleNeck=2000000;//假如文章凌驾2M字,必要提醒用户
varstrHTML;

//原始数据
strData=frmTest.BigField.value;

//假如文章其实太长,必要提示用户
if(strData.length>iBottleNeck)
{
if(confirm("您要公布的文章太长,倡议您拆分为几部分分离公布。
假如您保持提交,注重必要较长工夫才干提交乐成。

是不是保持提交?")==false)
returnfalse;
}

iCount=parseInt(strData.length/iMaxChars)+1;

//hdnCount纪录原数据域拆分为几个子域
strHTML="<inputtype=hiddenname=hdnCountvalue="+iCount+">";

//天生各子域的HTML代码
for(vari=1;i<=iCount;i++)
{
strHTML=strHTML+"
"+"<inputtype=hiddenname=hdnBigField"+i+">";
}

//在Form中DIV(divHidden)内静态拔出各hidden域的HTML代码
document.all.divHidden.innerHTML=strHTML;

//给各子域赋值
for(vari=1;i<=iCount;i++)
{
frmTest.elements["hdnBigField"+i].value=strData.substring((i-1)*iMaxChars,i*iMaxChars);
}

//原数据域清空
frmTest.BigField.value="";
}
</script>

====服务器端示例代码====
<%
DimstrData
DimintFieldCount
Dimi

intFieldCount=Request.Form("hdnCount")

Fori=1TointFieldCount
strData=strData&Request.Form("hdnBigfield"&i)
Next

Response.WritestrData
%>


你说微软为何要有个100KB的限定呢?浑!
</p>实现规模效益。与传统的用户拥有硬件软件所有权和使用权以及传统的应用服务商提供一对一的服务模式不同,ASP拥有应用系统所有权,用户拥有使用权,应用系统集中放在ASP的数据中心中,集中管理,分散使用,以一对多的租赁的形式为众多用户提供有品质保证的应用技术服务,实现规模效益。

老尸 发表于 2015-1-19 21:20:29

还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。

小女巫 发表于 2015-1-21 12:57:40

如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。

冷月葬花魂 发表于 2015-1-24 15:26:01

没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。

只想知道 发表于 2015-1-25 16:19:17

学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:

乐观 发表于 2015-1-27 15:40:03

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

admin 发表于 2015-2-5 06:56:44

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

活着的死人 发表于 2015-2-11 07:31:31

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

第二个灵魂 发表于 2015-3-1 23:31:00

跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组

不帅 发表于 2015-3-17 17:11:01

最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。

若天明 发表于 2015-3-24 14:08:32

不能只是将它停留在纸上谈兵的程度上。
页: [1]
查看完整版本: ASP网站制作之怎样在Form域中Post年夜于100K字节的数据...