Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'sinatra'
- require 'ftools'
- require 'dm-core'
- require 'dm-validations'
- require 'dm-timestamps'
- DataMapper.setup(:default, "sqlite3://#{Dir.pwd}/files.sqlite3")
- use Rack::Auth::Basic do |username, password|
- username == 'admin' && password == 'secret'
- end
- class StoredFile
- include DataMapper::Resource
- property :id, Integer, :serial => true # primary serial key
- property :filename, String, :nullable => false # cannot be null
- property :created_at, DateTime
- default_scope(:default).update(:order => [:created_at.desc])
- end
- DataMapper.auto_upgrade!
- # list
- get '/' do
- @files = StoredFile.all
- erb :list
- end
- # new file upload
- post '/' do
- tempfile = params['file'][:tempfile]
- @file = StoredFile.new :filename => params['file'][:filename]
- @file.save!
- File.copy(tempfile.path, "./files/#{@file.id}.upload")
- redirect '/'
- end
- # download file
- get '/:id' do
- @file = StoredFile.get(params[:id])
- send_file "./files/#{@file.id}.upload", :filename => @file.filename, :type => 'Application/octet-stream'
- redirect '/'
- end
- # delete file
- get '/:id/delete' do
- File.delete("./files/#{params[:id]}.upload")
- StoredFile.get(params[:id]).destroy
- redirect '/'
- end
Add Comment
Please, Sign In to add comment