プロが教えるわが家の防犯対策術!

とあるサイトのマルチパートリクエストの使用事例をそのまま使って153KB程度のGIFファイルをアップロード実験してみましたら、処理後ブラウザで「cgi-lib.pl: Request to receive too much data: 153345 bytes 」と表示されアップロードされません。表示の意味と、どうすればアップロードできるかを教えてください。
● サンプルHTML
<html>
<head><title>ファイルアップロード</title></head>
<body>
<form method="POST" action="upload.cgi" enctype="multipart/form-data">
<input type="file" name="upload">
<input type="submit" value="送信">
</form>
</body></html>

● サンプルCGI
require "cgi-lib.pl";
&ReadParse;

$upload = $in{"upload"}; # ファイル内容を取得
$name = $incfn{"upload"}; # ファイル名を取得

$name =~ s/\\/\//g; # パス区切り文字を/に変換
$name = substr($name,rindex($name,"/")+1); # ファイル名のみを取得

if($upload ne "" && $name ne ""){
open(FILE,">$name");
binmode(FILE);
print FILE $upload;
close(FILE);
}

A 回答 (2件)

cgi-lib.plは受信するデータのサイズの上限を設定するcgi_lib'maxdataという変数があります。



上記エラーメッセージは
$ENV{'CONTENT_LENGTH'} > cgi_lib'maxdata
となったときに表示されるメッセージです。

テストに使うファイルをサイズの小さいものに変更するか、上限の設定を変更してください。

ちなみにもし設定していなければ、
131072byte
に設定されています。

この回答への補足

わかりました。
kalzeさんの言っていたcgi_lib'maxdataの上限を変更してください・・・という記述で、cgi-libをテキストエディタでこわごわ開いたらどこを直すかすぐに分かりました。
初心者なのでライブラリの記述を書き換えるなんて恐ろしいこと考えたこともなかったです。
こんなことも場合によってはするんですね、いや勉強になりました。

補足日時:2004/10/15 19:22
    • good
    • 0
この回答へのお礼

お答えありがとうございます。

>上限の設定を変更してください。
そこのところもう少し詳しく教えていただけないでしょうか・・・よろしくお願いします。

お礼日時:2004/10/15 19:00

 単純に、リクエスト(データ)がサイズオーバーで受け取れなかったということではないのですか?


 画像を小さくして送ってみてください。

この回答への補足

わかりました。
#2の方の言っていたcgi_lib'maxdataの上限を変更してください・・・という記述で、cgi-libをテキストエディタで開いたらどこを直すかすぐに分かりました。
初心者なのでライブラリの記述を書き換えるなんて恐ろしいこと考えたこともなかったです。

補足日時:2004/10/15 19:18
    • good
    • 0
この回答へのお礼

なるほど・・・英語不得意で、なんとなくそのような事を言っているようには感じたのですが、やっぱりそうでしたか。ところでサイズを上限調整するにはどうしたら良いのでしょうか

お礼日時:2004/10/15 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!