Étant donné que Microsoft limite la taille des données soumises par POST, lorsque la quantité de données envoyées par le formulaire est importante, une erreur sera signalée (erreur ASP 0107 : 80004005). La raison en est que Microsoft limite le nombre maximum de données pouvant être reçues à l'aide de Request.Form() à 100 Ko. La solution au problème est que pour un domaine qui a besoin d'envoyer du Big Data, divisez les données en plusieurs parties plus petites que la limite avant de soumettre le formulaire, placez-les dans plusieurs champs masqués, effacez les champs d'origine en même temps, puis soumettre officiellement le formulaire. Le serveur utilise toujours Request.Form() pour lire les données dans chaque champ masqué, puis les regrouper dans l'ordre. Le code principal est le suivant :
Remarque : Vous devez spécifier un DIV dans le code HTML du formulaire pour y insérer dynamiquement le champ masqué.
====Exemple de code client====
Ajoutez : <div id=divHidden></div> au code HTML du formulaire. Ajoutez : onSubmit=return fnPreHandle(this) à la balise Form. Remplacez le BigField dans le code ci-dessous par le champ de votre formulaire qui soumet le. grand nom de base de données.
Code JavaScript
Copiez le code comme suit :
<langage de script=javascript>
//Les données sont divisées et placées dans le domaine caché correspondant, qui est déclenché dans l'événement onSubmit du formulaire
fonction fnPreHandle (MonFormulaire)
{
var iCount; //Combien de domaines diviser
var strData; //données originales
var iMaxChars = 50000;//Étant donné que les caractères chinois sont des doubles octets, le nombre maximum de caractères dans le domaine est limité à 50 Ko
var iBottleNeck = 2000000; //Si l'article dépasse 2 millions de mots, l'utilisateur doit être invité
var strHTML;
//données originales
strData = MyForm.BigField.value ;
//Si l'article est trop long, il faut le rappeler à l'utilisateur
si (strData.length > iBottleNeck)
{
if (confirmer(L'article que vous souhaitez publier est trop long, il est recommandé de le diviser en plusieurs parties et de les publier séparément./nSi vous insistez pour le soumettre, veuillez noter qu'il faudra beaucoup de temps pour le soumettre avec succès./ n/nInsistez-vous pour soumettre ?) == false )
renvoie faux ;
}
iCount = parseInt(strData.length / iMaxChars) + 1 ;
//hdnCount enregistre le nombre de sous-domaines en lesquels le domaine de données d'origine est divisé
strHTML = <input type=hidden name=hdnCount value= + iCount + >;
//Générer du code HTML pour chaque sous-domaine
pour (var i = 1; i <= iCount; i++)
{
strHTML = strHTML + /n + <input type=hidden name=hdnBigField + i + >;
}
//Insérez dynamiquement le code HTML de chaque champ masqué dans le DIV (divHidden) du formulaire
document.all.divHidden.innerHTML = strHTML;
//Attribuer des valeurs à chaque sous-champ
pour (var i = 1; i <= iCount; i++)
{
MyForm.elements[hdnBigField + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
}
//Effacer le champ de données d'origine
MonFormulaire.BigField.value = ;
}
</script>
Exemple de code côté serveur Code ASP/Visual Basic
Copiez le code comme suit :
<%
Dim strData
Dim intFieldCount
Faible je
intFieldCount = Request.Form (hdnCount)
Pour i = 1 à intFieldCount
strData = strData & Request.Form (hdnBigfield & i)
Suivant
Réponse.Write strData
%>