2008年05月06日

Rubyでファイルアップロード(サーバ側処理)

シンプルにブラウザから、アップロードされたファイルをWebサーバのc:\\usr配下に
保存します。

環境:
・WindowsXP SP2
・Ruby 1.8.6

●upload.html・・・ファイルアップロードフォームがあるHTML

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title></title>
</head>
<body>
<form action="/cgi-bin/upload.rb" method="POST" enctype="multipart/form-data">
<input type="FILE" name="upload_file" size="20">
<input type="submit" value="送信">
</form>
</body>
</html>


●upload.rb・・・ファイルアップロードCGI

require "cgi"

OUTPUT_DIR = "c:\\usr\\"

begin
form = CGI.new

print "Content-type: text/html\n\n"

#TempfileなのかStringIOなのかを表示
print form['upload_file'].class.to_s + "<br>"

#アップロードしたファイル名
print form['upload_file'].original_filename + "<br>"

#ファイルサイズ
print form['upload_file'].size.to_s + "<br>"

#サーバ上のOUTPUT_DIR下に保存します。
open(OUTPUT_DIR + form['upload_file'].original_filename, "w") {|fh|
fh.binmode
fh.write form['upload_file'].read
}
print "Done!"

rescue => e
print "Error!!" + e
end

posted by 台北猫々 at 22:21| Comment(0) | TrackBack(0) | 技術メモ(Ruby)