Dado que Microsoft limita el tamaño de los datos enviados por POST, cuando la cantidad de datos enviados por el formulario es grande, se informará un error (error ASP 0107: 80004005). La razón es que Microsoft limita el máximo de datos que se pueden recibir usando Request.Form() a 100K bytes. La solución al problema es que para un dominio que necesita enviar grandes datos, divida los datos en varias partes más pequeñas que el límite antes de enviar el formulario, colóquelas en varios campos ocultos, borre los campos originales al mismo tiempo y luego presentar formalmente el formulario. El servidor todavía usa Request.Form() para leer los datos en cada campo oculto y luego unirlos en orden. El código principal es el siguiente:
Nota: Debe especificar un DIV dentro del código HTML en el formulario para insertar dinámicamente el campo oculto en él.
====Código de muestra del cliente====
Agregue: <div id=divHidden></div> al código HTML en el formulario. Agregue: onSubmit=return fnPreHandle(this) a la etiqueta del formulario. Reemplace BigField en el código siguiente con el campo en su formulario que envía el. nombre de base de datos grande.
código javascript
Copie el código de código de la siguiente manera:
<lenguaje de escritura=javascript>
// Los datos se dividen y se colocan en el dominio oculto correspondiente, que se activa en el evento onSubmit del formulario
función fnPreHandle (Mi formulario)
{
var iCount; // ¿En cuántos dominios dividir?
var strData; //datos originales
var iMaxChars = 50000;//Considerando que los caracteres chinos son bytes dobles, el número máximo de caracteres en el dominio está limitado a 50K
var iBottleneck = 2000000; //Si el artículo supera los 2 millones de palabras, es necesario avisar al usuario.
var cadenaHTML;
//datos originales
strData = MyForm.BigField.value;
//Si el artículo es demasiado largo, es necesario recordárselo al usuario.
si (strData.length > iBottleCuello)
{
si (confirmar (El artículo que desea publicar es demasiado largo, se recomienda dividirlo en varias partes y publicarlas por separado./nSi insiste en enviarlo, tenga en cuenta que tardará mucho en enviarse correctamente./ n/n¿Insistes en enviar?) == false )
devolver falso;
}
iCount = parseInt(strData.length / iMaxChars) + 1;
//hdnCount registra en cuántos subdominios se divide el dominio de datos original
strHTML = <tipo de entrada=nombre oculto=hdnCount valor= + iCount + >;
//Generar código HTML para cada subdominio
para (var i = 1; i <= iCount; i++)
{
strHTML = strHTML + /n + <tipo de entrada=nombre oculto=hdnBigField + i + >;
}
//Inserta dinámicamente el código HTML de cada campo oculto en el DIV (divHidden) del formulario
document.all.divHidden.innerHTML = strHTML;
//Asignar valores a cada subcampo
para (var i = 1; i <= iCount; i++)
{
MyForm.elements[hdnBigField + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
}
//Borrar el campo de datos original
MiForma.BigField.valor = ;
}
</script>
Código de muestra del lado del servidor Código ASP/Visual Basic
Copie el código de código de la siguiente manera:
<%
Dim strData
Dim intFieldCount
Yo tenue
intFieldCount = Solicitud.Form(hdnCount)
Para i=1 a intFieldCount
strData = strData y Solicitud.Form(hdnBigfield & i)
Próximo
Respuesta.Escribir strData
%>