Поскольку Microsoft ограничивает размер данных, отправляемых с помощью POST, при большом объеме данных, отправляемых формой, будет сообщено об ошибке (ошибка ASP 0107: 80004005). Причина в том, что Microsoft ограничивает максимальный размер данных, которые можно получить с помощью Request.Form(), 100 КБ. Решение проблемы заключается в том, что для домена, которому необходимо отправлять большие данные, перед отправкой формы разбейте данные на несколько частей, меньших лимита, поместите их в несколько скрытых полей, одновременно очистите исходные поля, а затем официально отправить форму. Сервер по-прежнему использует Request.Form() для чтения данных в каждом скрытом поле, а затем объединяет их по порядку. Основной код выглядит следующим образом:
Примечание. Вам необходимо указать DIV в HTML-коде формы, чтобы динамически вставлять в нее скрытое поле.
====Пример кода клиента====
Добавьте: <div id=divHidden></div> в HTML-код формы. Добавьте: onSubmit=return fnPreHandle(this) в тег формы. Замените BigField в приведенном ниже коде полем формы, которое отправляет данные. большая база данных.
JavaScript-код
Скопируйте код кода следующим образом:
<язык сценария=javascript>
//Данные разделяются и помещаются в соответствующий скрытый домен, который запускается в событии onSubmit формы.
функция fnPreHandle(MyForm)
{
var iCount; //На сколько доменов разделить
вар strData; //исходные данные;
var iMaxChars = 50000;//Учитывая, что китайские иероглифы представляют собой двухбайтовые символы, максимальное количество символов в домене ограничено 50 КБ
var iBottleNeck = 2000000 //Если статья превышает 2 миллиона слов, пользователю необходимо указать это.
вар стрHTML;
//исходные данные
стрДанные = МояФорма.БольшоеПоле.значение;
//Если статья слишком длинная, нужно напомнить пользователю
если (strData.length > iBottleNeck)
{
if (confirm(Статья, которую вы хотите опубликовать, слишком длинная, рекомендуется разделить ее на несколько частей и опубликовать их отдельно./nЕсли вы настаиваете на отправке, обратите внимание, что для успешной отправки потребуется много времени./ n/nВы настаиваете на отправке?) == false )
вернуть ложь;
}
iCount = parseInt(strData.length/iMaxChars) + 1;
//hdnCount записывает, на сколько поддоменов разделен исходный домен данных
strHTML = <тип ввода=скрытое имя=значение hdnCount= + iCount + >;
//Генерируем HTML-код для каждого субдомена
for (var я = 1; я <= iCount; я++)
{
strHTML = strHTML + /n + <тип ввода=скрытое имя=hdnBigField + i + >;
}
//Динамически вставляем HTML-код каждого скрытого поля в DIV (divHidden) формы.
document.all.divHidden.innerHTML = strHTML;
//Присваиваем значения каждому подполю
for (var я = 1; я <= iCount; я++)
{
MyForm.elements[hdnBigField + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
}
//Очистим исходное поле данных
МояФорма.БигПоле.значение = ;
}
</скрипт>
Пример кода на стороне сервера Код ASP/Visual Basic
Скопируйте код кода следующим образом:
<%
Дим стрдата
Dim intFieldCount
Дим я
intFieldCount = Request.Form(hdnCount)
Для i=1 в intFieldCount
strData = strData & Request.Form(hdnBigfield & i)
Следующий
Response.Write strData
%>