Beim Hochladen von Dateien muss man eine besondere Option setzen, um dem Server anzuzeigen, dass neben den "`normalen"' (und damit HTML-kodierten) Informationen auch noch eine Datei (binär) übertragen wird. Diese "`Multipart"'-Formulare können mit dem CGI-Modul ebenfalls erzeugt und bearbeitet werden.
cgi = CGI.new("html3")
cgi.out {
cgi.html {
cgi.head { cgi.title{"Formulare mit Ruby"} } +
cgi.body {
cgi.multipart_form("/cgi-bin/mpshow.rb"){
cgi.file_field("path", 30) +
cgi.submit
}}}}
Die Daten werden in einem TempFile-Objekt gespeichert und können direkt weiter bearbeitet werden.
require "cgi" cgi = CGI.new file = cgi['path'][0] # übertragene Datei file.read # Daten file.local_path # auf dem Server file.original_filename # auf dem Client file.content_type # Content-Type