文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程PHP如何在Form域中Post大于100K字节的数据
精品推荐
特别推荐
·菜鸟学PHP之Smarty入门
·PHP环境安全配置教程
·PHP入门指导:如何学习PHP?
·Php+Mysql注入专题
·PHP:实现给上传图片加水印的程序代码
·PHP动态网站开发中常用的8个小技巧
·PHP初学者:配置Apache服务器并且设置DNS
·初学PHP指导:php.ini 配置详细选项
·好文分享:PHP入门的学习方法
·急速搭建属于自己的Discuz!6论坛
·PHP入门:初学来看配置文件PHP.INI的中文注释
·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
·总结:一些PHP学习过程中的心得和经验
·新手入门:JSP初学者必须掌握的语法点
·PHP技巧:PHP脚本编程中的文件系统函数库
·详细讲解PHP编程中分页显示的制作
·成为PHP编程高手应该遵循的三个准则
·谈谈生成静态页面的一些经验
·新手入门:详细解述七个软件开发的原则
·简单的webservice开发例子
热点TOP10
·80004005 及其它错误消息的疑难解答
·一个Struts实现分页,增删改查,Tiles,国际化的DEMO
·MyEclipse+struts+Hibernate配置开发
·Php+Mysql注入专题
·Windows XP下PHP+MySQL环境搭建
·菜鸟学PHP之Smarty入门
·PHP 会话 (Session) 使用入门
·简单的webservice开发例子
·PHP+Access设计留言版实战
·学习教程:Java Annotation 高级应用
·TomCat 多虚拟站点配置
·PHP 操作 XML 文件:读取、显示
·初学者学习PHP开发应该掌握的几段精华代码
·基于Servlet的Google Earth之旅
·用PHP实现多级树型菜单
·模板用xml的思路
·动态网页制作学习:PHP预定义变量
·PHP入门指导:如何学习PHP?
·php.ini配置,php.ini 中的 php-5.2.0 配置指令详解
·JDBC连接Oracle数据库常见问题及解决方法

如何在Form域中Post大于100K字节的数据

日期:2008年4月12日 作者:清风网络学院 查看:[大字体 中字体 小字体]


如何在Form域中Post大于100K字节的数据????


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

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

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

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

====客户端示例代码====
<script language=javascript>
//数据拆分,并放到相应的hidden域中,在Form的onSubmit事件中激发
function fnPreHandle()
{
var iCount; //拆分为多少个域
var strData; //原始数据
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 i

intFieldCount = Request.Form("hdnCount")

For i=1 To intFieldCount
strData = strData & Request.Form("hdnBigfield" & i)
Next

Response.Write strData
%>


你说微软为什么要有个100KB的限制呢?浑!

(出处:清风网络学院






上一篇:ASP可以动态Include文件吗

下一篇:80004005 及其它错误消息的疑难解答

如何在Form域中Post大于100K字节的数据 相关文章:
·EasyRecovery 604硬盘数据恢复软件技巧
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·巧用Excel函数来实现工作表间的数据关联
·Access 通用数据访问类(asp.net 2.0 c#)
·在MySQL数据库增加新用户权限简介
·在SQL Server 2000里设置和使用数据库复制
·ADO连接数据库字符串大全
·Excel中分类设置录入数据的下拉列表
·Sql数据库MDF数据文件数据库恢复
如何在Form域中Post大于100K字节的数据 相关软件:
·数据仓库
·逐步精通数据库 sql server 视频教程
·爆出网站数据库路径
·SQL/MYSQL/数据库教程专栏
·FinalRecovery(数据恢复工具)V2.2.6.275 汉化版
·ACCESS数据库教程 北京大学的ACCESS教程
·逐步精通数据库 MYSQL
·数据通XPV3.0
·ASP.NET 数据库搜索引擎
·QQ IP数据库 Build 0820 纯真版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn