フォームから送信されるデータ量が多い場合、エラーが報告されます。 MSDN を確認したところ、Microsoft が Request.Form() を使用して受信できる最大データに制限があり、IIS4 では 80K バイト、IIS5 では 100K バイトであることがわかりました。
Microsoft が提供するいくつかの解決策を次に示します。
1. Request.Form メソッドの代わりに Request.BinaryRead を使用してフォーム データを解析します。
2. Microsoft Posting Acceptor などのファイル アップロード ソリューションを使用します。
3. それぞれ 102399 バイトの制限があるため、したがって、送信するときは、102399 を超えるフォーム要素の内容を複数のフォーム要素に分割して送信します。
以下はサンプル コードです: (Microsoft は次のことを注意します: 次のコードは特定のニーズに完全には適用できない可能性があり、これらのコードを使用した結果については責任を負いません!)
<FORM method=post action=LargePost.asp name=theForm onsubmit= "ブレイクイットアップ()">
<Textarea rows=3cols=100 name=BigTextArea>大量のテキスト...</Textarea>
<入力タイプ=送信値=行く>
</form>
<SCRIPT 言語=JavaScript>
関数 BreakItUp()
{
//フィールドサイズの制限を設定します。
//コンテンツに漢字が含まれている場合は、51100 に設定できます。
var FormLimit = 102399
// 大きな入力オブジェクトの値を取得します。
var TempVar = 新しい文字列
TempVar = document.theForm.BigTextArea.value
// オブジェクトの長さが制限を超えている場合は分割します
//複数のオブジェクトに分割します。
if (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
while (TempVar.length > 0)
{
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "ビッグテキストエリア"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
}
}
}
</スクリプト>
データページを受け入れるためのメインコード:
<%
薄暗い大きなテキストエリア
For I = 1 To Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
次
%>