Mae向きなブログ

Mae向きな情報発信を続けていきたいと思います。

Ruby, CGI, ファイルのアップロード

Ruby, CGIで,ファイルをアップロードをすることはできたのですが,他の情報を送ることができず悩んでいましたが,解決しました。

以下を参考にしました。

<html>
<head><title>アップロードサンプル</title></head>
<body>
<form method="POST" action="up.rb" enctype="multipart/form-data">
アップロードしたいファイル:
<input type="FILE" name="file"><br>
文字列を渡せるか:
<input type="TEXT" name="str"><br>
<input type="SUBMIT" name="upload" value="アップロードする">
</form>
</body>
</html>
#!/usr/bin/ruby
require 'cgi'

FILE_PATH = "uploaddir"
cgi = CGI.new

name = cgi.params["str"][0].read
file = cgi.params["file"][0]
file_name = file.original_filename.split(/(\\|\/)/)[-1]

File.open("#{FILE_PATH}/#{file_name}", "w") do |f|
  f.binmode
  f.write(file.read)
end

puts cgi.header("type" => "text/html", "charset" => "euc-jp")
puts <<EOS
<html>
<head><title>アップロードサンプル</title></head>
<body>
<h1>アップロードされたファイル</h1>
ファイル名:#{file_name}<br>
渡された文字列:#{name}
</body></html>
EOS