request.form 返回的字符串是不是有长度限制

gogo1979 2006-12-15 09:05:09
我做了一个类似写email的系统,写完之后需要将内容提交.
我用的是post方法, content=(request.form("content"))来获得内容.
内容有时会>200k.奇怪的是我在xp系统下一切正常,而在一个2000系统下,
返回的len(content)会=0.
为什么会这样啊?
...全文
747 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogo1979 2006-12-18
  • 打赏
  • 举报
回复

问题的答案找到了,但是不知道有没有更好的解决办法
×××××××××××××××××××××××
实现Form表单域中Post大于100K的数据
在工作中遇到一个问题,当表单发送的数据量很大时,就会报错。查阅MSDN了解到,原因是微软对用Request.Form()可接收的最大数据有限制,IIS4中为80K字节,IIS5中为100K字节,目前还不清楚iis6.0有没有这样的限制或者限制是多少K。

下面是微软提供的几个解决方法:

1、用Request.BinaryRead 代替 Request.Form方法 来解析表单数据;
Request.BinaryRead()读取表单数据,但由于这种方法读出的是二进制数据,需要对读出的数据逐字节进行分析,生成有意义的字符串(MSDN上的一段程序就是这样写的),但是用来解析汉字可能就不是那么简单了


2、使用文件上传方案,比如:Microsoft Posting Acceptor;
这个方法没有用过
3、由于102399字节的限制是对每个表单元素的,所以在提交时,把表单元素内容大于102399的分隔成多个表单元素来提交。

  下面为示例代码:(微软提醒:下面代码不一定完全适用特定的需要,不对使用这些代码产生的后果负责!)

<FORM method=post action=LargePost.asp name=theForm onsubmit="BreakItUp()">
<Textarea rows=3 cols=100 name=BigTextArea>A bunch of text...</Textarea>
<input type=submit value=go>
</form>
<SCRIPT Language=JavaScript>
function BreakItUp()
{
//Set the limit for field size.
//如果内容有中文的字符的话,可以设置为:51100
var FormLimit = 102399
//Get the value of the large input object.
var TempVar = new String
TempVar = document.theForm.BigTextArea.value
//If the length of the object is greater than the limit, break it
//into multiple objects.
if (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
while (TempVar.length > 0)
{
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)

TempVar = TempVar.substr(FormLimit)
}
}
}
</SCRIPT>

接受数据页主要代码:

<%
Dim BigTextArea
For I = 1 To Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
Next
%>

注意:限制的不是整个表单数据的总和不能超过100KB,而是对表单内每个域的限制不能超过100KB







Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1287757

cow8063 2006-12-15
  • 打赏
  • 举报
回复
没有限制的
windwl 2006-12-15
  • 打赏
  • 举报
回复
IIS5还是 IIS6?
对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。
IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB
madpc 2006-12-15
  • 打赏
  • 举报
回复
content很长?
gogo1979 2006-12-15
  • 打赏
  • 举报
回复
什么都没人支持一下啊?是我问题描述不清楚吗?
stou 2006-12-15
  • 打赏
  • 举报
回复
不會有限制.
www_7di_net 2006-12-15
  • 打赏
  • 举报
回复
数据获取的方法修改一下
For I = 1 To Request.Form("message").Count
message = message & Request.Form("message")(I)
Next
response.write message
taia 2006-12-15
  • 打赏
  • 举报
回复
打印request("content"))有内容吗
gogo1979 2006-12-15
  • 打赏
  • 举报
回复
我测试了一下,在2000下当content 为100K左右的时候就返回的就是空
具体代码:

<form name="news" method="post" action="news_edit.asp" onSubmit="return checkform()">
.....
<textarea name="content" cols="100" rows="20"><%response.write (rs("content"))%></textarea></td>
......
<input type="submit" value="修改" name="cmdok" class="button">
</form>
gogo1979 2006-12-15
  • 打赏
  • 举报
回复
是很长的,大概会有几百k的.会不会是IIs的设置问题?

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧