Da Microsoft die Größe der per POST übermittelten Daten begrenzt, wird ein Fehler gemeldet, wenn die vom Formular gesendete Datenmenge groß ist (Fehler ASP 0107: 80004005). Der Grund dafür ist, dass Microsoft die maximale Datenmenge, die mit Request.Form() empfangen werden kann, auf 100 KB begrenzt. Die Lösung des Problems besteht darin, dass Sie bei einer Domäne, die große Datenmengen senden muss, die Daten vor dem Absenden des Formulars in mehrere Teile aufteilen, die kleiner als das Limit sind, sie in mehreren ausgeblendeten Feldern platzieren, gleichzeitig die ursprünglichen Felder löschen und dann Senden Sie das Formular offiziell ab. Der Server verwendet weiterhin Request.Form(), um die Daten in jedem versteckten Feld zu lesen und sie dann der Reihe nach zusammenzufügen. Der Hauptcode lautet wie folgt:
Hinweis: Sie müssen im HTML-Code im Formular ein DIV angeben, um das ausgeblendete Feld dynamisch einzufügen.
====Client-Beispielcode====
Fügen Sie Folgendes hinzu: <div id=divHidden></div> zum HTML-Code im Formular. Fügen Sie Folgendes hinzu: onSubmit=return fnPreHandle(this) zum Formular-Tag. Ersetzen Sie das BigField im Code unten durch das Feld in Ihrem Formular, das das sendet großer Datenbankname.
JavaScript-Code
Kopieren Sie den Codecode wie folgt:
<Skriptsprache=Javascript>
//Die Daten werden aufgeteilt und in der entsprechenden versteckten Domäne platziert, die im onSubmit-Ereignis des Formulars ausgelöst wird
Funktion fnPreHandle(MyForm)
{
var iCount; //Wie viele Domänen sollen aufgeteilt werden?
var strData; //Originaldaten
var iMaxChars = 50000;// Da chinesische Zeichen Doppelbytes sind, ist die maximale Anzahl von Zeichen in der Domäne auf 50 KB begrenzt
var iBottleNeck = 2000000; //Wenn der Artikel mehr als 2 Millionen Wörter umfasst, muss der Benutzer dazu aufgefordert werden
var strHTML;
//Originaldaten
strData = MyForm.BigField.value;
//Wenn der Artikel zu lang ist, muss der Benutzer daran erinnert werden
if (strData.length > iBottleNeck)
{
Wenn (bestätigen(Der Artikel, den Sie veröffentlichen möchten, ist zu lang. Es wird empfohlen, ihn in mehrere Teile aufzuteilen und diese separat zu veröffentlichen./nWenn Sie auf der Übermittlung bestehen, beachten Sie bitte, dass die erfolgreiche Übermittlung lange dauern wird./ n/nBestehen Sie auf dem Absenden?) == false )
return false;
}
iCount = parseInt(strData.length / iMaxChars) + 1;
//hdnCount zeichnet auf, in wie viele Subdomänen die ursprüngliche Datendomäne aufgeteilt ist
strHTML = <input type=hidden name=hdnCount value= + iCount + >;
//HTML-Code für jede Subdomain generieren
for (var i = 1; i <= iCount; i++)
{
strHTML = strHTML + /n + <input type=hidden name=hdnBigField + i + >;
}
// Den HTML-Code jedes ausgeblendeten Felds dynamisch in das DIV (divHidden) im Formular einfügen
document.all.divHidden.innerHTML = strHTML;
//Weisen Sie jedem Unterfeld Werte zu
for (var i = 1; i <= iCount; i++)
{
MyForm.elements[hdnBigField + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
}
//Löschen Sie das ursprüngliche Datenfeld
MyForm.BigField.value = ;
}
</script>
Serverseitiger Beispielcode ASP/Visual Basic-Code
Kopieren Sie den Codecode wie folgt:
<%
StrData dimmen
Dim intFieldCount
Dim ich
intFieldCount = Request.Form(hdnCount)
Für i=1 bis intFieldCount
strData = strData & Request.Form(hdnBigfield & i)
Nächste
Response.Write strData
%>