ASP实现表单大容量数据的提交方法

以前在工作中遇到一个问题,当表单发送的数据量很大时,就会报错。查阅MSDN了解到,原因是微软对用Request.Form()可接收的最大数据限制为100K字节。

微软建议用Request.BinaryRead()读取表单数据,但由于这种方法读出的是二进制数据,需要对读出的数据逐字节进行分析,生成有意义的字符串(MSDN上的一段程序就是这样写的,但它并没有考虑诸如标点符号等转义字符需要进行特殊分析)。如果说这种方法对于纯英文系统勉强可用的话,则对于中文系统来说就有极大的麻烦,因为汉字是用两个字节表示的,而读出的二进制数据本身并不能判断是英文还是汉字(否则就不是二进制数据,而是字符串了^-^)。这样的话就必须了解汉字的编码规律才能进行分析。最后,即使算法上能把这些都分析出来,大家想想对于一个MB级的巨型字符串逐字节进行分析,其效率何如?所以,此路不通!

不过,办法总是有的。一开始我以为是整个表单数据的总和不能超过100KB,后来发现这是对表单内每个域的限制。问题的解决办法是,对于一个需要发送大数据的域,在提交表单前将数据拆分为小于限额的数份,分别放在数个hidden域中,同时把原有域清空,再正式提交表单。服务器端还是用Request.Form()读取各hidden域的数据,再按照顺序把他们拼接起来就行了。主要代码如下:

  注意:需要在Form中的HTML代码内指定一个DIV,以便向其中动态插入hidden域。

  ====客户端示例代码====


以下为引用的内容:

 <SCRIPT language=javascript>
  file://数据拆分,并放到相应的hidden域中,在Form的onSubmit事件中激发
  function fnPreHandle()
  {
  var iCount; file://拆分为多少个域
  var strData; file://原始数据
  var iMaxChars = 50000;//考虑到汉字为双字节,域的最大字符数限制为50K
  var iBottleNeck = 2000000;//如果文章超过2M字,需要提示用户
  var strHTML;//原始数据
  strData = frmTest.BigField.value;//如果文章实在太长,需要提醒用户
  if (strData.length > iBottleNeck)
  {
  if (confirm("您要发布的文章太长,建议您拆分为几部分分别发布。\n如果您坚持提交,注意需要较长时间才能提交成功。\n\n是否坚持提交?") == false)
  return false;
  }iCount = parseInt(strData.length / iMaxChars) + 1;//hdnCount记录原数据域拆分为多少个子域
  strHTML = "<input type=hidden name=hdnCount value=" + iCount + ">";//生成各子域的HTML代码
  for (var i = 1; i <= iCount; i++)
  {
  strHTML = strHTML + "\n" + "<input type=hidden name=hdnBigField" + i + ">";
  }//在Form中DIV(divHidden)内动态插入各hidden域的HTML代码
  document.all.divHidden.innerHTML = strHTML;//给各子域赋值
  for (var i = 1; i <= iCount; i++)
  {
  frmTest.elements["hdnBigField" + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
  }//原数据域清空
  frmTest.BigField.value = "";
  }
  </SCRIPT>

  ====服务器端示例代码====  


以下为引用的内容:

<%
  Dim strData
  Dim intFieldCount
  Dim iintFieldCount = Request.Form("hdnCount")For i=1 To intFieldCount
  strData = strData & Request.Form("hdnBigfield" & i)
  NextResponse.Write strData
  %>

时间: 2024-11-02 16:41:55

ASP实现表单大容量数据的提交方法的相关文章

js获取form表单所有数据的简单方法_javascript技巧

在HTML中用js获取通过GET.POST方法(就是在网址后加?a=b&c=d之类)传过来的表单值. 针对大家常用的获取表单方式,很多时候都是在重复的写一些代码,今天给大家贴出来的代码可以作为公用方法直接调用.可以提高大家的开发效率. Js代码 <script type="text/javascript"> //获取指定form中的所有的<input>对象 function getElements(formId) { var form = documen

编辑器-form表单通过360浏览器提交数据,controller获取不到参数

问题描述 form表单通过360浏览器提交数据,controller获取不到参数 我做了一个小DEMO,进行新闻的CRUD,用的是ueditor,测试的时候,IE可以显示数据, 火狐也可以,chrome也行,但是有时候点击"编辑新闻"时,编辑器里是空白,时有时无, 360浏览器就一直是空白,我看了一下MyEclipse控制台,是因为没获取页面提交的数据. 希望求大神解决啊!!! 解决方案 360你使用的是兼容模式还是急速模式?兼容模式是ie内核(默认好像是ie7内核..并不是系统最高版

实现多个WEB页面要接收同一个表单的数据的功能

web|数据|页面 有时候我们会遇到这样的问题,即多个页面要接收同一个表单的数据,那么怎么实现这一功能呢,本文将会阐述. 我们知道,一个表单可以很容易地递交到一个处理页面,只需要一个submit按钮即可,但有时候,我们要用不同的处理页面来接收表单的数据并加以处理.如果我们为不同的处理页面分别设计各自的表单的话,如果采集的数据都是一样的,在这种情况下既浪费页面篇幅同时在大数据量输入时非常浪费时间和精力.要解决这一问题我们只需要实现一个表单向多个页面递交数据这一功能即可. 那么怎么实现这一功能呢?下

JSP表单自动数据验证组件简介

js|数据 从jsp到servlet或者action过程中还有很多需要处理的事情:数据有效性验证包括jsp页面的javascript验证和服务器端的验证.对文件上传的处理.文件上传大小的控制.防止二次提交.multipart form的非文件字段的处理.这些事情不属于jsp也不属于action,我们的开发人员会把这些事情直接在jsp里处理或者交给了action处理,当然如果采用了mvc框架来开发的话,有些mvc框架包含了对这部分的处理. 比较著名的有struts的formbean和webwork

网页-表单自动填写内容提交

问题描述 表单自动填写内容提交 每天更新数据到mysql上.然后登陆网站,从数据库里面查找相关填表内容,然后自动填写进打开的网页表单内,自动点击提交,这个web网页 是别人的 解决方案 web automation的方式点击表格提交 解决方案二: 还可以浏览器插件,插入javascript来操作web页面 解决方案三: 下载httpanalyzerstd工具截取别人网站的提交动作的数据包,然后分析数据包格式构造,具体怎么操作自行百度,然后用使用http协议post方法提交,只要你数据包构造正确,

Codeigniter检测表单post数据的方法_php实例

本文实例讲述了Codeigniter检测表单post数据的方法.分享给大家供大家参考.具体如下: $name = $this->input->post(' name' ) ; $email = $this- >input->post( ' email' ) ; $subj ect = $this->input->post( ' subject' ) ; $message = $this->input->post( ' message' ) ; if(empt

jquery下异步提交表单 异步跨域提交表单_jquery

1.使用post提交方式 2.构造表单的数格式 3.结合form表单的submit调用ajax的回调函数. 使用 jQuery 异步提交表单代码: 复制代码 代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> </head> <script src="js/jquery-1.4.2.js">&l

jQuery form插件之formDdata参数校验表单及验证后提交_jquery

Form Plugin API 里提供了很多有用的方法可以让你轻松的处理表单里的数据和表单的提交过程. 测试环境:部署到Tomcat中的web项目. 一.引入依赖js <script src="jquery-1.3.1.js" type="text/javascript"></script> <script src="jquery.form.js" type="text/javascript"&g

PHP获取表单textarea数据中的换行问题_php技巧

测试页面代码: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-e