Wenn die vom Formular gesendete Datenmenge groß ist, wird ein Fehler gemeldet. Bei der Überprüfung von MSDN haben wir erfahren, dass der Grund darin liegt, dass Microsoft die maximale Datenmenge, die mit Request.Form() empfangen werden kann, begrenzt. Diese beträgt 80 KB in IIS4 und 100 KB in IIS5.
Im Folgenden sind mehrere von Microsoft bereitgestellte Lösungen aufgeführt:
1. Verwenden Sie die Methode „Request.BinaryRead“ anstelle der Methode „Request.Form“, um Formulardaten zu analysieren.
2.
Verwenden Sie eine Datei-Upload-Lösung, z. B. Microsoft Posting Acceptor
Teilen Sie daher beim Senden den Formularelementinhalt, der größer als 102399 ist, in mehrere Formularelemente zur Übermittlung auf.
Das Folgende ist ein Beispielcode: (Microsoft weist darauf hin, dass der folgende Code möglicherweise nicht vollständig auf bestimmte Anforderungen anwendbar ist und nicht für die Folgen der Verwendung dieser Codes verantwortlich ist!)
<FORM method=post action=LargePost.asp name=theForm onsubmit= „BreakItUp()“>
<Textarea rows=3 cols=100 name=BigTextArea>Eine Menge Text...</Textarea>
<Eingabetyp=Wert senden=go>
</form>
<SCRIPT Language=JavaScript>
Funktion BreakItUp()
{
//Legen Sie die Grenze für die Feldgröße fest.
//Wenn der Inhalt chinesische Zeichen enthält, kann er auf 51100 gesetzt werden
var FormLimit = 102399
//Den Wert des großen Eingabeobjekts abrufen.
var TempVar = neuer String
TempVar = document.theForm.BigTextArea.value
//Wenn die Länge des Objekts größer als das Limit ist, unterbrechen Sie es
//in mehrere Objekte.
if (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
while (TempVar. Länge > 0)
{
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
}
}
}
</SCRIPT>
Hauptcode zum Akzeptieren der Datenseite:
<%
Dimmen Sie BigTextArea
Für I = 1 To Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
Nächste
%>