Index: [Article Count Order] [Thread]

Date:  Sat, 29 Sep 2001 06:37:09 +0900 (JST)
From:  URA Takefumi <hage@...>
Subject:  multipart/form-dataで受け取った際のtempファイル
To:  modruby-ja@...
Message-Id:  <20010928213709.BFFE95E40@...>
X-Mail-Count: 00221

浦と申します。

まず、以下のeRubyスクリプトをご覧ください。これは、multipart/form-dataで
フォームの情報を受けるスクリプトです。

--- test.rhtml
#!/usr/local/bin/eruby
%require 'cgi'
%c = CGI.new
%s = (v = c['param'].first) ? v.read : 'nil'

<html>
 <head><title>test</title></head>
 <body>
  <p><%= s %></p>
  <form method=post action="test.rhtml" enctype="multipart/form-data">
   <input type=text name="param">
   <input type="submit">
  </form>
 </body>
</html>
---

さてこれを動かし、submitすると /tmp にゴミのファイルが残ってしまいます。

上記のものと同じことをする以下のCGIだと、ゴミは残りません。

--- test.cgi
#!/usr/local/bin/ruby
require 'cgi'
c = CGI.new
s = (v = c['param'].first) ? v.read : 'nil'

puts <<HTML
Content-Type: text/html

<html>
 <head><title>test</title></head>
 <body>
  <p>#{s}</p>
  <form method=post action="test.cgi" enctype="multipart/form-data">
   <input type=text name="param">
   <input type="submit">
  </form>
 </body>
</html>
HTML
---

FreeBSDとDebian GNU/Linuxの両方で同様に起き、必ず再現します。

使用しているバージョンは

tura@...:~$ eruby --version; uname -sr
eRuby version 0.9.6
ruby 1.6.4 (2001-08-16) [i686-linux]
Linux 2.2.19

及び

scipio:tura:~/project/spn/web$ eruby --version; uname -sr
eRuby version 0.9.6
ruby 1.6.4 (2001-08-16) [i386-freebsd4.3]
FreeBSD 4.3-RELEASE

です。以上、少しコードを追ってみたのですが追いきれなかったので ^^;
レポートします。

--
浦 岳史 (うら たけふみ) 【メイルアドレスをURL表記しよう運動】
    mailto:hage@...