เมื่อปริมาณข้อมูลที่ส่งโดยแบบฟอร์มมีขนาดใหญ่ ข้อผิดพลาดจะถูกรายงาน จากการตรวจสอบ MSDN เราได้เรียนรู้ว่าเหตุผลก็คือ Microsoft มีขีดจำกัดเกี่ยวกับข้อมูลสูงสุดที่สามารถรับได้โดยใช้ Request.Form() โดยมีขนาด 80K ไบต์ใน IIS4 และ 100K ไบต์ใน IIS5
ต่อไปนี้คือโซลูชันต่างๆ ที่ Microsoft มอบให้:
1. ใช้วิธี Request.BinaryRead แทนวิธี Request.Form เพื่อแยกวิเคราะห์ข้อมูลในฟอร์ม
2. ใช้โซลูชันการอัปโหลดไฟล์ เช่น Microsoft Posting Acceptor
3. เนื่องจากขีดจำกัด 102399 ไบต์มีไว้สำหรับแต่ละรายการ องค์ประกอบของแบบฟอร์ม ดังนั้นเมื่อส่ง ให้แยกเนื้อหาองค์ประกอบของแบบฟอร์มที่มากกว่า 102399 ออกเป็นองค์ประกอบของแบบฟอร์มหลายรายการเพื่อส่ง
ต่อไปนี้คือโค้ดตัวอย่าง: (Microsoft เตือน: รหัสต่อไปนี้อาจไม่สามารถใช้ได้อย่างสมบูรณ์กับความต้องการเฉพาะ และไม่รับผิดชอบต่อผลที่ตามมาจากการใช้รหัสเหล่านี้!)
<FORM method=post action=LargePost.asp name=theForm onsubmit= "เบรกอิทอัพ()">
<Textarea rows=3 cols=100 name=BigTextArea>กลุ่มข้อความ...</Textarea>
<ประเภทอินพุต=ส่งค่า=ไป>
</แบบฟอร์ม>
<ภาษาสคริปต์=จาวาสคริปต์>
ฟังก์ชัน BreakItUp()
-
//กำหนดขีดจำกัดขนาดฟิลด์
//หากเนื้อหามีตัวอักษรจีน สามารถตั้งค่าเป็น: 51100
var FormLimit = 102399
// รับค่าของวัตถุอินพุตขนาดใหญ่
var TempVar = สตริงใหม่
TempVar = document.theForm.BigTextArea.value
//ถ้าความยาวของวัตถุมากกว่าขีดจำกัด ให้ทำลายมัน
// ลงในหลายวัตถุ
ถ้า (TempVar.length > FormLimit)
-
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
ในขณะที่ (ความยาว TempVar. > 0)
-
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild (objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
-
-
-
</สคริปต์>
รหัสหลักสำหรับการรับข้อมูลหน้า:
<%
Dim BigTextArea
สำหรับฉัน = 1 เพื่อขอแบบฟอร์ม ("BigTextArea").นับ
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
ต่อไป
-