From: rubikitch@... Date: 2008-09-16T19:03:44+09:00 Subject: [ruby-list:45505] Re: マルチパートフォームデータのescapeHTML From: 宮崎 詠二 Subject: [ruby-list:45504] Re: マルチパートフォームデータのescapeHTML Date: Tue, 16 Sep 2008 14:26:35 +0900 > > マルチパートフォームデータの場合はStringの代わりにStringIOになっているので、 > > 「.read」をつけくわえてみましょう。 > > 下記のように「.read」をつけくわえてみましたがどうもうまくゆかないようで > した。 > > require "cgi" > cgi = CGI.new > params = cgi.params > params.each{|key, val| > val = val.read 舌足らずですみません。 マルチパートではない場合は val は Array of String ですが、 今回の場合は Array of StringIO となります。 val.first.read でパラメータを取得できます。 なお、フォームで同じコントロール名を複数個指定できるため、 CGI#paramsの結果は配列のハッシュになっています。 多くの場合は最初の値を取得するので、利便性のためにCGI#[]があります。 言うまでもないですが、このCGIスクリプトには出力がないので出力を書かない とエラーになります。 > > escapeHTMLはあくまでHTML出力時に変換すべきであって、cgi#paramsを上書きすべきではありません。 > > あらかじめタグ処理したものを保存して出力時にはいつでも安心して使用できる > ようにと思ったのですが良くないようですね。 どうしてもというならば、新しいハッシュ、たとえば escaped_params とかに 格納するとよいでしょう。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/