Мне повезло с примером кода, найденным в этой теме .
Включение здесь, если ссылка исчезнет:
post '/upload' do
unless params[:file] &&
(tmpfile = params[:file][:tempfile]) &&
(name = params[:file][:filename])
@error = "No file selected"
return haml(:upload)
end
STDERR.puts "Uploading file, original name #{name.inspect}"
while blk = tmpfile.read(65536)
# here you would write it to its final location
STDERR.puts blk.inspect
end
"Upload complete"
end
Тогда ваш взгляд будет выглядеть так. При этом используется HAML, но важная часть заключается в том, чтобы не забыть установить enctype в элементе формы, в противном случае вы просто получите имя файла вместо объекта:
%form{:action=>"/upload",:method=>"post" ,:enctype=>"multipart/form-data"}
%input{:type=>"file",:name=>"file"}
%input{:type=>"submit",:value=>"Upload"}