林と申します。
multipartフォームから受け取った画像ファイルを、
サイズを確認して、保存する処理をしているのですが、
10KB以下のファイルを送信すると、'stat'に対してNoMethodErrorが
出てしまいます。
10KBより大きなファイルだと正常に処理するので、
なにか仕様的な事でしょうか。
どなたか、ご教授お願い致します。

スクリプトは単純で、

require "cgi"
cgi = CGI.new
file = cgi.params['file'][0]
filesize = file.stat.size
print "Content-Type: text/html\n\n"
print filesize


4行目を処理するときに、10KB以下のファイルだと以下のエラーが出ます。

undefined method `stat' for #<StringIO:0x4060274c> (NoMethodError)


また、上記処理は大きすぎるファイルをアップロードされないように、
サイズチェックをしているのですが、
(サイズが一定以上だと警告メッセージを表示させています)
tempfileオブジェクトとして一旦受け取らないといけないので、
結局サーバーには負担がかかってしまいます。
フォームからバイナリデータを受け取りながら、設定サイズを超えた時点で、
エラー処理に移る方法が採れれば、より安全なのですが、
そのような実装は可能でしょうか。

よろしくお願い致します。