dak ブログ

python、rubyなどのプログラミング、MySQL、サーバーの設定などの備忘録。レゴの写真も。

rubyのCGIでアップロードされたファイルを読み込む

2011-02-09 22:07:52 | linux
rubyのCGIで、アップロードされたファイルを読み込む方法の備忘録です。

cgi = CGI.new
file = cgi.params['file_name'][0]

file でアップロードされたファイルのデータを扱うことができます。
アップロードされたファイルのサイズが 10240 バイト未満の場合には、StringIO、10240 バイト以上の場合には Tempfile のオブジェクトになります。

もし、両方とも Tempfile で扱いたい場合には、以下のようにして StringIO のデータをTempfile に書き込んでしまえばよいでしょう。

if file.class == StringIO
tf = Tempfile.new
tf.print(file_data.read)
tf.rewind
file = tf
end

formでのファイルのアップロード

2011-02-09 01:40:23 | ウェブサービス
form でファイルをアップロードするには、form タグの enctype に multipart/form-data を指定して、<input type="file"> でファイルを選択するようにします。

<form name="upload" method="post" action="upload.cgi" enctype="multipart/form-data">
<input type="file" name="file_name">
<input type="submit" value="送信">
</form>