冷月葬花魂 发表于 2015-1-16 22:08:09

ASP网页编程之ASP完成表单年夜容量数据的提交办法

楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。之前在事情中碰到一个成绩,当表单发送的数据量很年夜时,就会报错。查阅MSDN懂得到,缘故原由是微软对用Request.Form()可吸收的最年夜数据限定为100K字节。微软倡议用Request.BinaryRead()读取表双数据,但因为这类办法读出的是二进制数据,必要对读出的数据逐字节举行剖析,天生成心义的字符串(MSDN上的一段程序就是如许写的,但它并没有思索诸如标点标记等本义字符必要举行特别剖析)。假如说这类办法关于纯英文体系委曲可用的话,则关于中文体系来讲就有极年夜的贫苦,由于汉字是用两个字节暗示的,而读出的二进制数据自己其实不能判别是英文仍是汉字(不然就不是二进制数据,而是字符串了^-^)。如许的话就必需懂得汉字的编码纪律才干举行剖析。最初,即便算法上能把这些都剖析出来,人人想一想关于一个MB级的巨型字符串逐字节举行剖析,其效力何如?以是,此路欠亨!
不外,举措老是有的。一入手下手我觉得是全部表双数据的总和不克不及凌驾100KB,厥后发明这是对表单内每一个域的限定。成绩的办理举措是,关于一个必要发送年夜数据的域,在提交表单前将数据拆分为小于限额的数份,分离放在数个hidden域中,同时把原有域清空,再正式提交表单。服务器端仍是用Request.Form()读取各hidden域的数据,再依照按次把他们拼接起来就好了。次要代码以下:
  注重:必要在Form中的HTML代码内指定一个DIV,以便向个中静态拔出hidden域。
  ====客户端示例代码====
以下为援用的内容:
 <SCRIPTlanguage=javascript>
  file://数据拆分,并放到响应的hidden域中,在Form的onSubmit事务中引发
  functionfnPreHandle()
  {
  variCount;file://拆分为几个域
  varstrData;file://原始数据
  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
  DimiintFieldCount=Request.Form("hdnCount")Fori=1TointFieldCount
  strData=strData&Request.Form("hdnBigfield"&i)
  NextResponse.WritestrData
  %>
ASP一般认为只能运行在IIS上,正如前面所提到的,这并不是十分正确,事实上,ASP也能运行在Apache上。ApacheASP可在任意Apache服务器上运行有限的ASP功能,所需做的,只需打开mod_perl。

小妖女 发表于 2015-1-18 20:51:14

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

分手快乐 发表于 2015-1-25 17:39:00

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

愤怒的大鸟 发表于 2015-2-3 12:18:09

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。

老尸 发表于 2015-2-8 22:48:21

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

爱飞 发表于 2015-2-26 13:51:32

交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。

小魔女 发表于 2015-3-8 15:30:00

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

若相依 发表于 2015-3-16 03:38:44

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

柔情似水 发表于 2015-3-22 19:50:32

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
页: [1]
查看完整版本: ASP网页编程之ASP完成表单年夜容量数据的提交办法