Microsoft는 POST로 제출된 데이터의 크기를 제한하므로 양식으로 전송된 데이터의 양이 많으면 오류가 보고됩니다(오류 ASP 0107: 80004005). 그 이유는 Microsoft가 Request.Form()을 사용하여 수신할 수 있는 최대 데이터를 100K 바이트로 제한하기 때문입니다. 문제의 해결 방법은 빅데이터를 전송해야 하는 도메인의 경우 양식을 제출하기 전에 데이터를 한도보다 작은 여러 부분으로 분할하여 여러 개의 숨겨진 필드에 배치하고 동시에 원본 필드를 지운 다음 공식적으로 양식을 제출합니다. 서버는 여전히 Request.Form()을 사용하여 각 숨겨진 필드의 데이터를 읽은 다음 순서대로 연결합니다. 주요 코드는 다음과 같습니다.
참고: 숨겨진 필드를 동적으로 삽입하려면 양식의 HTML 코드 내에 DIV를 지정해야 합니다.
====클라이언트 샘플 코드====
양식의 HTML 코드에 다음을 추가합니다. onSubmit=return fnPreHandle(this)을 양식 태그에 추가합니다. 아래 코드의 BigField를 양식에 있는 필드로 바꿉니다. 큰 데이터베이스 이름.
자바스크립트 코드
다음과 같이 코드 코드를 복사합니다.
<스크립트 언어=자바스크립트>
//데이터가 분할되어 해당 숨겨진 도메인에 배치되며 이는 양식의 onSubmit 이벤트에서 트리거됩니다.
함수 fnPreHandle(MyForm)
{
var iCount; //분할할 도메인 수
var strData; //원본 데이터
var iMaxChars = 50000;//한자는 2바이트라는 점을 고려하여 도메인의 최대 문자 수는 50K로 제한됩니다.
var iBottleNeck = 2000000; //기사가 200만 단어를 초과하면 사용자에게 메시지를 표시해야 합니다.
var strHTML;
//원본 데이터
strData = MyForm.BigField.value;
//글이 너무 길면 사용자에게 상기시켜주어야 합니다.
if (strData.length > iBottleNeck)
{
if (확인(게재하고 싶은 글이 너무 깁니다. 여러 부분으로 나누어서 따로 게재하는 것을 권장합니다./n꼭 투고할 경우 성공적으로 투고하는 데 시간이 오래 걸린다는 점 참고하시기 바랍니다./ n/n제출을 고집하시나요?) == false )
거짓을 반환;
}
iCount = parsInt(strData.length / iMaxChars) + 1;
//hdnCount는 원래 데이터 도메인이 분할된 하위 도메인 수를 기록합니다.
strHTML = <입력 유형=숨겨진 이름=hdnCount 값= + iCount + >;
//각 하위 도메인에 대한 HTML 코드 생성
for (var i = 1; i <= iCount; i++)
{
strHTML = strHTML + /n + <입력 유형=숨겨진 이름=hdnBigField + i + >;
}
//각 숨겨진 필드의 HTML 코드를 양식의 DIV(divHidden)에 동적으로 삽입합니다.
document.all.divHidden.innerHTML = strHTML;
//각 하위 필드에 값을 할당합니다.
for (var i = 1; i <= iCount; i++)
{
MyForm.elements[hdnBigField + i].value = strData.substring((i - 1) * iMaxChars, i * iMaxChars);
}
//원본 데이터 필드 지우기
MyForm.BigField.value = ;
}
</script>
서버측 샘플 코드 ASP/Visual Basic 코드
다음과 같이 코드 코드를 복사합니다.
<%
희미한 strData
Dim intFieldCount
나는 어둡다
intFieldCount = 요청.양식(hdnCount)
i=1의 경우 intFieldCount로
strData = strData & Request.Form(hdnBigfield & i)
다음
응답.strData 쓰기
%>