From d4ccdf736f536b420aceeb6cb8589495cd2e4a34 Mon Sep 17 00:00:00 2001 From: Tobias Bühlmann Date: Sun, 25 Apr 2010 13:46:42 +0200 Subject: initial commit --- file_upload.rb | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 file_upload.rb (limited to 'file_upload.rb') diff --git a/file_upload.rb b/file_upload.rb new file mode 100644 index 0000000..b9a6d6d --- /dev/null +++ b/file_upload.rb @@ -0,0 +1,54 @@ +# encoding: utf-8 + +require 'rubygems' +require 'haml' +require 'pathname' +require 'sinatra/base' + +class FileUpload < Sinatra::Base + configure do + enable :static + enable :sessions + + set :views, Pathname.new(__FILE__).dirname.join('views').expand_path + set :public, Pathname.new(__FILE__).dirname.join('public').expand_path + end + + helpers do + def flash(message = '') + session[:flash] = message + end + end + + not_found do + haml '404' + end + + error do + haml "Error (#{request.env['sinatra.error']})" + end + + get '/' do + @files = settings.public.join('files').entries - [Pathname('.'), Pathname('..')] + + @flash = session[:flash] + session[:flash] = nil + + haml :index + end + + post '/upload' do + if params[:file] + filename = params[:file][:filename] + file = params[:file][:tempfile] + + File.open(settings.public.join('files', filename), 'wb') {|f| f.write file.read } + + flash 'Uploaded successfully' + else + flash 'You have to choose a file' + end + + redirect '/' + end +end -- cgit v1.2.3