CGI-BBS > 情報収集 > フォームメール > cgi-lib.pl: Request to receive too much data


カレッヂ
カレッヂ


質問者 ほそ  投稿日 2/15(木) 13:00:06
レスキューのメールフォームメールを使って添付ファイルをそうしんしたところ
cgi-lib.pl: Request to receive too much data
のようなエラーになります。131072バイトの文字制限みたいなことがレスキューの本にかいてありましたが、制限をなくすにはどうしたらいいでしょうか?
<form action=formmail.cgi method=post ENCTYPE=multipart/form-data>

回答者 羊相談員  [削除]  投稿日 2/15(木) 14:01:34
>131072バイトの文字制限みたいなことがレスキューの本にかいてありましたが、制限をなくすにはどうしたらいいでしょうか?

電子産業に大きな影響を与えられるような人物でなければ難しいと思います。
回答者 まさ  [削除]  投稿日 2/15(木) 14:23:26
制限をなくすのは、cgi-lib.plの中に以下のような記述があります。

if ($len > $cgi_lib'maxdata) { #'
   &CgiDie("cgi-lib.pl: Request to receive too much data: $len bytes\n");
}

これを

#if ($len > $cgi_lib'maxdata) { #'
#   &CgiDie("cgi-lib.pl: Request to receive too much data: $len bytes\n");
#}

こうすることにより制限はなくなります。
しかしこれをなくすのはあまり賢明ではありません。

$cgi_lib'maxdata = 131072; # maximum bytes to accept via POST - 2^17

同様にcgi-lib.plの中に上のような記述があります。
この数字を大きくする手もありますけど、しかしこれもあまり勧められません。
まあどうしてもと言うのであればやってみて下さい。
質問者 ほそ  [削除]  投稿日 2/15(木) 14:45:36
まささん、ひつじさんありがとうございます。
>まささん
制限をなくすのに、cgi-lib.plの記述を変更したばあいにどんな問題点があるのでしょうか?ネットやサーバー管理上のルールみたいなものでしょうか?
回答者 しあわせのツボ  [削除]  投稿日 2/15(木) 14:49:38
CGIの制限というよりは、HTTPのPOSTメソッドの仕様による制限です。
エラーチェックを外せば一応は動作しますが、128KBを超えるファイルについては正しく転送される保証はありません。
質問者 ほそ  [削除]  投稿日 2/15(木) 16:02:57
いろいろ幼稚な質問に付き合っていただいてありがとうございました。
仮に1M程度の画像ファイルを添付して送信するとして(メールでしかファイルを受け取れない環境の場合)FTPやアップレットなど別の方法は無いでしょうか?
回答者 羊相談員  [削除]  投稿日 2/15(木) 20:28:44
>仮に1M程度の画像ファイルを添付して

ネチケット的に問題があります。
1年半ほど前、1Mほどのメールを受信したことがあるのですが
大変なことになりました。
回答者 まさ  [削除]  投稿日 2/15(木) 20:33:57
そのファイルは固定ファイルですか?

基本的にはPOSTを使わなければいいんです。
直接添付してやればいくらでもOKです。

どうしてもPOSTを使うのなら、そのファイルを分割して送るとよいでしょう。
質問者 ほそ  [削除]  投稿日 2/15(木) 21:40:06
羊さん、まささんありがとうございます。周りに相談できる相手がいなくてついつい甘えてしまいまして。
具体的に作ろうとしている物の仕様を書きますと、不特定なクライアントが画像(JPEG)
ファイルをアップロードして、その画像ファイルをにメールに添付して送信する。
というものです。
その送信相手がメールでしかファイルを受け取れないという?な事情があります。また、
環境としてはUNIX系レンタルサーバーです。
画像をアップするクライアントにファイルサイズを抑えてもらおうにも想定されるクライアントの年齢層がかなり高めなので期待できません。
痛い質問だとは思いますがなんとかお知恵を拝借できたらと思います。
回答者 まさ  [削除]  投稿日 2/16(金) 06:29:04
その送信相手と言うのは固定なのでしょうか?
また送ってくるクライアントのパソコン(OS)はまちまちですか?

送信相手が固定でOSがWindows、クライアントのOSもWindowsならば方法はあります。
しかし画像のサイズを抑えることも出来ないのでは難しいかもしれません。
恐らく画像サイズを抑える方が簡単でしょう。
しかしこれもクライアントのOSがまちまちならば使えません。

大きなファイルのやりとりにもいろいろな方法がありますけど、このようにメールに添付で
きない場合ですと、FTPが一般的でしょう。あるいはホームページ上からダウンロードし
てもらうとか。しかしその相手がメールしかできないとなると難しいですね。

-------------------------------------------------------------------------

しかしよく考えてみるとPOSTでデータそのものを渡すのではなく、ファイル名だけ渡して、
あとは内部でsendmailするときにそのファイル名で指定されたファイルを添付すればいいの
では。わたしはこれが一番現実的かと思います。これならばいくらの容量のファイルでも添付
できます。

質問者 ほそ  [削除]  投稿日 2/16(金) 08:08:52
まささん早朝ありがとう。
送信相手は固定でwindowsです。クライアントは不定です。
早速、その方法で試してみようと思います。結果報告します。
月曜あたりに(笑)

返信(回答)する


Web裏技