こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

バイナリファイルのアップロード

とあるサイトのマルチパートリクエストの使用事例をそのまま使って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);
}

投稿日時 - 2004-10-15 18:43:31

QNo.1043405

困ってます

質問者が選んだベストアンサー

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

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

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

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

投稿日時 - 2004-10-15 18:52:40

補足

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

投稿日時 - 2004-10-15 19:22:08

お礼

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

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

投稿日時 - 2004-10-15 19:00:44

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

 単純に、リクエスト(データ)がサイズオーバーで受け取れなかったということではないのですか?
 画像を小さくして送ってみてください。

投稿日時 - 2004-10-15 18:52:18

補足

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

投稿日時 - 2004-10-15 19:18:58

お礼

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

投稿日時 - 2004-10-15 18:58:38

あなたにオススメの質問