Если объем данных, отправленных формой, велик, будет сообщено об ошибке. Проверив MSDN, мы узнали, что причина в том, что Microsoft имеет ограничение на максимальный объем данных, которые можно получить с помощью Request.Form(). Он составляет 80 КБ в IIS4 и 100 КБ в IIS5.
Ниже приведены несколько решений, предоставленных Microsoft:
1. Используйте Request.BinaryRead вместо метода Request.Form для анализа данных формы.
2. Используйте решение для загрузки файлов, например Microsoft Posting Acceptor.
3. Поскольку для каждого из них установлено ограничение в 102399 байт; элементы формы, поэтому при отправке разделите содержимое элемента формы, превышающее 102399, на несколько элементов формы для отправки.
Ниже приведен пример кода: (Microsoft напоминает: следующий код может быть не полностью применим к конкретным потребностям и не несет ответственности за последствия использования этих кодов!)
<FORM метод=post action=LargePost.asp name=theForm onsubmit= "BreakItUp()">
<Textarea rows=3 cols=100 name=BigTextArea>Куча текста...</Textarea>
<тип ввода=отправить значение=идти>
</форма>
<Язык СКРИПТА=JavaScript>
функция BreakItUp()
{
//Устанавливаем ограничение на размер поля.
//Если в содержимом есть китайские иероглифы, можно установить значение: 51100
вар FormLimit = 102399
//Получаем значение большого входного объекта.
вар TempVar = новая строка
TempVar = document.theForm.BigTextArea.value
//Если длина объекта больше лимита, разбиваем его
//на несколько объектов.
если (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
в то время как (TempVar. длина > 0)
{
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
}
}
}
</СКРИПТ>
Основной код для принятия страницы данных:
<%
Затемнить BigTextArea
Для I = 1 To Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
Следующий
%>