Project

General

Profile

Actions

Feature #600

closed

cgi.rbのマルチパートフォームの受信は1.8との互換性が低い

Added by xibbar (Takeyuki FUJIOKA) about 16 years ago. Updated over 13 years ago.


Description

=begin
see: [ruby-dev:36450]
MorphingBodyがインターフェースが1.8と大分変わっていて、
互換性がなくなっています。
現状は大分使いづらいです。
しかし、1.8のcgi.rbのマルチパートの受信データはすべて
StringIOかTempfileというのも使いづらいと思います。
そのため、マルチパートもファイル以外の項目は
String型にして、それにreadの特異メソッドをつけてあげるのが
いいのではないかと思っています。
cgi['title'] #=> #StringIO:0x3f9fbc
cgi['title'].read #=> "タイトル"
となっているのを
cgi['title'] #=> "タイトル"
cgi['title'].read #=> "タイトル"
とすると、ある程度互換性を保ちつつ、
使いやすいものになるのではないかと思っています。
ファイルの場合はこれまで通り、StringIOかTempfileがいいと思います。
ご意見をいただければと思います。
=end

Actions #1

Updated by yugui (Yuki Sonoda) about 16 years ago

  • Target version set to 1.9.1 Release Candidate

=begin

=end

Actions #2

Updated by xibbar (Takeyuki FUJIOKA) about 16 years ago

=begin

cgi['title'] #=> #StringIO:0x3f9fbc
cgi['title'].read #=> "タイトル"
となっているのを
cgi['title'] #=> "タイトル"
cgi['title'].read #=> "タイトル"
とすると、ある程度互換性を保ちつつ、
使いやすいものになるのではないかと思っています。
ファイルの場合はこれまで通り、StringIOかTempfileがいいと思います。

特に異論がないようなので、今日コミットします。
ファイルではないもの(つまり、original_filenameがないもの)は
Stringで受け取れるようにして、
特異メソッドでread、original_filename、content_typeをつけます。
=end

Actions #3

Updated by Tietew (Toru Iwase) about 16 years ago

=begin

特異メソッドでread、original_filename、content_typeをつけます。

ファイルか否かを respond_to?(:original_filename) で判断しているプログラムがあるので、すべてに特異メソッドをつけられると少し困ります。

ファイルか否かの判定法は original_filename が偽を返す?
=end

Actions #4

Updated by xibbar (Takeyuki FUJIOKA) about 16 years ago

=begin

ファイルか否かを respond_to?(:original_filename) で判断しているプログラムがあるので、すべてに特異メソッドをつけられると少し困ります。
ファイルか否かの判定法は original_filename が偽を返す?

現在の1.8のcgi.rbはマルチパートを受け取った時に
ファイルでないもののoriginal_filenameの中身は""のようです。
つまり、マルチパートの受け取りでは
すべての項目でtrueになってしまうと思います。
マルチパートかどうかの判別と勘違いしていたりしませんでしょうか?
=end

Actions #5

Updated by Tietew (Toru Iwase) about 16 years ago

=begin
勘違いです。
mutipartを予期しているプログラムに x-www-form-urlencoded をPOSTすると NameError、なんてのを防ぐために色々チェックしているのが bad know-how 化しているので、ごっちゃになってしまったんだと思います。

Perlの CGI.pm では 2.47 から $cgi->upload('name') というメソッドがあり、アップロードファイルだけ分けて取ってこれるので、CGI#upload のような追加メソッドがあると嬉しいのかも。

=end

Actions #6

Updated by xibbar (Takeyuki FUJIOKA) about 16 years ago

=begin
CGI#filesというのを用意しようと思っていました。
=end

Actions #7

Updated by xibbar (Takeyuki FUJIOKA) about 16 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r19906.
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0