The following code was used to upload an image file to the web server. Source code origin: Ruby Language Stuff | mod_ruby File upload scripts [zytrax.com]
file: file_upload.cgi
#!/usr/bin/ruby
# ruby script fragment
require 'cgi'
require 'stringio'
cgi = CGI.new() # New CGI object
puts "Content-Type: text/plain"
puts
print ''
# get uri of tx'd file (in tmp normally)
tmpfile = cgi.params['myfile'].first.path
# OR (functionally the same)
tmpfile = cgi.params['myfile'][0].path
# create a Tempfile reference
fromfile = cgi.params['myfile'].first
#displays the original file name as supplied in the form
puts fromfile.original_filename
# displays the content (mime) type e.g. text/html
puts fromfile.content_type
# create output file reference as original filename in our chosen directory
tofile = '/var/www/yourdomain.com/htdocs/r/'+fromfile.original_filename
# copy the file
# note the untaint prevents a security error
# cgi sets up an StringIO object if file < 10240
# or a Tempfile object following works for both
File.open(tofile.untaint, 'w') { |file| file

