[ruby-list:39030] Re: CGI#[] on Ruby

From: GOTOU Yuuzou <gotoyuzo@...>
Date: 2004-01-07 13:59:44 UTC
List: ruby-list #39030
ごとうゆうぞうです。

In message <1073441258.190599.3008.nullmailer@picachu.netlab.jp>,
 `matz@ruby-lang.org (Yukihiro Matsumoto)' wrote:
> In message "[ruby-list:39028] Re: CGI#[] on Ruby"
>     on 04/01/07, m_seki@mva.biglobe.ne.jp <m_seki@mva.biglobe.ne.jp> writes:
> 
> |最近WEBrickに追加されたのwebrick/cgiはどうですかね。
> 
> 実はそう思ってメールを書きながら読んでみたのですが、使い方が
> 分かりませんでした。サンプルじゅーよー。

うぅ。さきほどHEADにサンプルをいくつか追加しました。

> webrickとどのくらい
> 不可分かも読み取れなかったし。

webrick と可分と言っていいのか分かりませんが、CGI の実行には
WEBrick::HTTPServer のように永続的なものは必要ありません。

multipart/form-data については、cgi.rb とは違いサイズに関係
なくメモリ上に展開するようになっているので、あまり無茶なこと
はできません。が、そのかわりに、最初にデータを参照するまでは
ボディを読み込まないので、

  def do_POST(req, res)
    if req["content-length"].to_i > 1024*10
      raise WEBrick::HTTPStatus::Forbidden, "file size too large"
    end

    file = req.query["file"]
    ...
  end

というふうに例外を上げて処理を中断させたりできます。

大きなデータを扱う場合は利用者側で処理を切り分けて、何か 
MIME を処理するライブラリでも使ったほうが分かりやすいんじゃ
ないかと今は思っているので、特に対処はしていませんけど、
どうでしょうね。

-- 
ごとうゆうぞう

In This Thread