■ファイルをアップロードし、アップロードした画像を表示する

■書式

open("./data.jpg","w") do |fh|
fh.binmode
fh.write formData['imgData'][0].read
end

print "<img src='data.jpg'></body></html>"

■説明

ファイルをアップロードするにはcgiライブラリを利用しファイルのデータを読み込みサーバー側にファイルとして書き込みます。サンプルではテンポラリファイルを作成し、後で名前を変更するようにしています。このファイルを書き込むディレクトリは書き込みが許可されている必要があります。書き込んだファイル名を<img>タグのsrc属性で指定することでアップロードした画像を表示させることができます。

■サンプル (CGI)

#!/usr/bin/ruby
require "cgi"
formData = CGI.new
print "Content-type: text/html\n\n"
print "<html><head><title>Sample</title></head><body>"
print "Now Uploading...<br>"
fh = open("| touch temp.jpg")
fh = open("| chmod 666 temp.jpg")
open("./temp.jpg","w") do |fh|
fh.binmode
fh.write formData['imgData'][0].read
end
fh = open("| mv temp.jpg data.jpg")
print "Upload End"
print "<img src='data.jpg'></body></html>"

■サンプル (HTML)

<html>
<head>
<title>Ruby CGI Sample</title>
</head>
<body>
<form method="post" action="./sample.cgi" enctype="multipart/form-data">
画像<input type="file" name="imgData"><br>
<input type="submit" value="Upload">
</form>
</body>
</html>