メモのコツを教えてください!

HTMLフォームでmultipart/form-dataによりPerlCGIのcgi-lib.plで値を取得するやり方で画像ファイルをWebサーバーのフォルダにアップロードします。
その際例えば600KBより大きければ、「画像が大きすぎます。600KB以下のデータに変更して再度実行してください」というHTMLメッセージを、600KB以下なら保存する、という条件分岐はどう書いたら良いでしょうか?
またCGIで判断させるとしたら一旦データを取り込んでから判断するわけですから、ファイルアップロードが実行された後の処理という事で時間がかかりそうなので、ひょっとすると一般的にはJavascriptか何かでHTML側で判断して600KB超のデータなら、そのデータは送らないみたいなことをするのかも・・・もしそうならその記述も教えてください?
ちなみにPerlもJavaScriptも初心者レベルですのでお手柔らかな解答お願いします。

A 回答 (2件)

JavaScript では無理なんで、CGI側で行うことになりますが、CGI.pm にしろ cgi-lib.pl を使うにしろそれ以前で


CONTENT_LENGTH
を読んでサイズを確認するのがよいかと。

if( $ENV{CONTENT_LENGTH} > 600*1024 )
{ print("だめぽ"); exit(0) }

とかで。

実際にはファイルサイズのみならず、それ以外のデータもくっついたサイズですが、ファイルサイズのほうが圧倒的に大きいのが普通なので、誤差ってことで無視するとか。
    • good
    • 0
この回答へのお礼

返事おくれて申し訳ありませんでした。
教えてもらった条件分岐で"いけぽ"でした。
ありがとうございました。またよろしくお願いします。

お礼日時:2004/10/22 10:01

 むーん(^_^;


 それは cgi-lib.pl の仕様なので、お手柔らかにするのは無理かも(笑)
 サイズオーバー時にはエラーメッセージを表示せずに実体データとして undef を設定するようにすればいいんですけど……。
 これをやるには cgi-lib.pl を改造するしかないんですよ。

 あるいは、CGI.pm という Perl モジュールを使用する方法もあるにはありますが……。
    • good
    • 0
この回答へのお礼

難しいすか・・・
>これをやるには cgi-lib.pl を改造するしかないんですよ。
先程サイズオーバーになったので、cgi-lib.pl サイズを書き替えましたが、そんなちょっとした改造ではないのでしょうね・・・

>あるいは、CGI.pm という Perl モジュールを使用する方法もあるにはありますが……。

そういう手があるというのも調べて分かったんですが、cgi-lib.plを使った方法の方がなじみがあったもんで、そちらでやってみたんですが、やっぱりCGI.pmでのコーディングの方が良いのでしょうか。

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

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