module Sinatra::Helpers

def send_file(path, opts = {})

Use the contents of the file at +path+ as the response body.
def send_file(path, opts = {})
  if opts[:type] or not response['Content-Type']
    content_type opts[:type] || File.extname(path), :default => 'application/octet-stream'
  end
  disposition = opts[:disposition]
  filename    = opts[:filename]
  disposition = 'attachment' if disposition.nil? and filename
  filename    = path         if filename.nil?
  attachment(filename, disposition) if disposition
  last_modified opts[:last_modified] if opts[:last_modified]
  file      = Rack::File.new nil
  file.path = path
  result    = file.serving env
  result[1].each { |k,v| headers[k] ||= v }
  headers['Content-Length'] = result[1]['Content-Length']
  halt opts[:status] || result[0], result[2]
rescue Errno::ENOENT
  not_found
end