Quando a quantidade de dados enviados pelo formulário for grande, será reportado um erro. Verificando o MSDN, descobrimos que o motivo é que a Microsoft tem um limite no máximo de dados que podem ser recebidos usando Request.Form(). São 80K bytes no IIS4 e 100K bytes no IIS5.
A seguir estão várias soluções fornecidas pela Microsoft:
1. Use Request.BinaryRead em vez do método Request.Form para analisar os dados do formulário
2. Use uma solução de upload de arquivo, como o Microsoft Posting Acceptor
3. Como o limite de 102399 bytes é para cada; elementos de formulário, portanto, ao enviar, separe o conteúdo do elemento de formulário maior que 102399 em vários elementos de formulário para envio.
A seguir está um exemplo de código: (A Microsoft lembra: O código a seguir pode não ser totalmente aplicável a necessidades específicas e não é responsável pelas consequências do uso desses códigos!)
<FORM method=post action=LargePost.asp name=theForm onsubmit= "BreakItUp()">
<Textarea rows=3 cols=100 name=BigTextArea>Um monte de texto...</Textarea>
<tipo de entrada = enviar valor = ir>
</form>
<linguagem SCRIPT=JavaScript>
função BreakItUp()
{
//Defina o limite para o tamanho do campo.
//Se o conteúdo tiver caracteres chineses, pode ser definido como: 51100
var FormLimit = 102399
//Obtém o valor do objeto de entrada grande.
varTempVar = nova String
TempVar = document.theForm.BigTextArea.value
//Se o comprimento do objeto for maior que o limite, quebra-o
//em vários objetos.
if (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
while (TempVar. comprimento > 0)
{
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
}
}
}
</SCRIPT>
Código principal para aceitação da página de dados:
<%
Escurecer BigTextArea
Para I = 1 Para Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
Próximo
%>