عندما تكون كمية البيانات المرسلة بواسطة النموذج كبيرة، سيتم الإبلاغ عن خطأ. عند التحقق من MSDN، علمنا أن السبب هو أن Microsoft لديها حد أقصى للبيانات التي يمكن تلقيها باستخدام Request.Form() وهو 80 كيلو بايت في IIS4 و100 كيلو بايت في IIS5.
فيما يلي العديد من الحلول التي تقدمها Microsoft:
1. استخدم Request.BinaryRead بدلاً من أسلوب Request.Form لتحليل بيانات النموذج؛
2. استخدم حل تحميل الملفات، مثل Microsoft Posting Acceptor
3. نظرًا لأن الحد الأقصى هو 102399 بايت لكل منها عناصر النموذج، لذلك عند الإرسال، قم بفصل محتوى عنصر النموذج الأكبر من 102399 إلى عناصر نموذج متعددة للإرسال.
ما يلي هو نموذج للتعليمة البرمجية: (تذكر Microsoft: قد لا تكون التعليمات البرمجية التالية قابلة للتطبيق بشكل كامل على احتياجات معينة، وليست مسؤولة عن عواقب استخدام هذه الرموز!)
<FORM Method=post action=LargePost.asp name=theForm onsubmit= "بريك إت أب ()">
<Textarearows=3 cols=100 name=BigTextArea>مجموعة من النصوص...</Textarea>
<نوع الإدخال = قيمة الإرسال = اذهب>
</النموذج>
<لغة البرنامج النصي=جافا سكريبت>
الدالة BreakItUp()
{
// قم بتعيين الحد الأقصى لحجم الحقل.
// إذا كان المحتوى يحتوي على أحرف صينية، فيمكن ضبطه على: 51100
فار فورمليميت = 102399
// احصل على قيمة كائن الإدخال الكبير.
var TempVar = سلسلة جديدة
TempVar = document.theForm.BigTextArea.value
// إذا كان طول الكائن أكبر من الحد الأقصى، فقم بكسره
// إلى كائنات متعددة.
إذا (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
بينما (TempVar. length > 0)
{
فار objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
}
}
}
</النص>
الكود الرئيسي لقبول صفحة البيانات:
<%
منطقة النص الكبير الخافتة
لأني = 1 إلى Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
التالي
%>