asp下对POST提交数据限制的解决方法
面对微软对POST提交数据大小的限制,当表单数据量过大时,会遇到报错“ASP 0107 : 80005”。这是由于微软对Request.Form()接收的数据设定了最大限制,约为100K字节。为了解决这个问题,我们可以采取一种策略:在提交大数据表单前,将数据拆分成多个小于限制的部分,分别存放在隐藏的表单域中,然后清空原域,再正式提交表单。服务器端则通过Request.Form()获取这些隐藏域的数据,再按照顺序拼接。
在Form标签中加入HTML代码:
,并在Form标签中加入onSubmit事件:onSubmit="return fnPreHandle(this)"。这里的"BigField"需要替换为你表单中用于提交大数据的字段名称。接下来是关键的JavaScript代码:
```html
// 数据拆分并放入相应的隐藏域中,在表单的提交事件中触发
function fnPreHandle(MyForm) {
var iCount; // 拆分的域的数量
var strData; // 原始数据
var iMaxChars = 50000; // 考虑到汉字为双字节,设置域的最大字符数限制为50K
var iBottleNeck = 2000000; // 如果文章超过2M字,提示用户
var strHTML; // 用于构建隐藏的input字段的HTML代码
// 获取原始数据
strData = MyForm.BigField.value;
// 如果文章过长,提示用户
if (strData.length > iBottleNeck) {
if (!confirm("您要发布的文章太长,建议您拆分为几部分分别发布。如果您坚持提交,注意需要较长时间才能提交成功。是否坚持提交?")) {
return false; // 用户选择取消,阻止表单提交
}
}
// 拆分数据并放入隐藏域中
// 此处省略数据拆分的具体实现,需要根据实际需要进行开发
strHTML = '';
// 清空原始数据域,准备提交表单
MyForm.BigField.value = ""; // 清空大数据字段
return true; // 允许表单正常提交
}
```
客户端JavaScript代码
```javascript
function splitAndHideData(strData, iMaxChars) {
if (strData.length <= iMaxChars) return true; // 如果数据长度小于等于最大字符数,直接返回true
let iCount = Math.ceil(strData.length / iMaxChars); // 计算数据需要拆分的子域数量
let strHTML = ``; // 生成隐藏计数字段的HTML代码
for (let i = 1; i <= iCount; i++) {
strHTML += ``; // 生成各子域的HTML代码
}
for (let i = 1; i <= iCount; i++) {
let startIndex = (i - 1) iMaxChars;
let endIndex = i iMaxChars;
MyForm.elements[`hdnBigField${i}`].value = strData.substring(startIndex, endIndex); // 给各子域赋值
}
MyForm.BigField.value = ""; // 清空原数据域
}
```
服务器端ASP/Visual Basic代码示例
```asp
<%
Dim strData, intFieldCount, i, strTempData
intFieldCount = Request.Form("hdnCount") ' 获取拆分字段数量
strData = "" ' 用于存储完整数据的变量初始化
For i = 1 To intFieldCount Step 1 ' 循环获取每个隐藏字段的数据并拼接成完整数据字符串
strTempData = Request.Form("hdnBigfield" & i) ' 获取单个隐藏字段的数据
strData = strData & strTempData ' 将单个字段的数据拼接到完整数据字符串中
Next i ' 循环结束标志
Response.Write strData ' 输出完整数据字符串到客户端页面或其他处理逻辑中,根据实际情况进行相应操作处理即可。这里仅为示例。 %> `js`\"(请注意代码段标签)\`。这段代码的主要功能是将客户端提交的数据进行拆分并隐藏处理,然后在服务器端重新组合并输出。通过拆分和隐藏数据,可以实现对大数据量的处理,同时保护数据的隐私性。代码中使用了JavaScript进行前端数据的拆分和隐藏处理,以及ASP/Visual Basic进行后端数据的接收和输出。通过这种方式,可以实现前后端协同处理数据的需求。请注意,在实际应用中需要根据具体情况对代码进行调整和优化。
编程语言
- asp下对POST提交数据限制的解决方法
- Laravel向公共模板赋值方法总结
- 在SAE上搭建最新wordpress的方法
- Laravel中使用自己编写类库的3种方法
- PHP获取客户端真实IP地址的5种情况分析和实现代
- asp.net使用npoi读取excel模板并导出下载详解
- jQuery使用animate实现ul列表项相互飘动效果示例
- PHP依赖注入(DI)和控制反转(IoC)详解
- PHP基础之输出缓冲区基本概念、原理分析
- PHP远程采集图片详细教程
- 原生JS和JQuery动态添加、删除表格行的方法
- jQuery左侧大图右侧小图焦点图幻灯切换代码分享
- javascript中使用正则表达式删除前后空格的方法
- 能不能在flash动画中给asp传递变量?
- jquery Easyui快速开发总结
- nodejs二进制与Buffer的介绍与使用