public
Description: Rack Upload handler with Nginx Upload Module support
Homepage:
Clone URL: git://github.com/mutle/rack-uploads.git
name age message
file .document Sat May 30 11:34:59 -0700 2009 Initial commit to rack-uploads. [Mutwin Kraus]
file .gitignore Sat May 30 11:34:59 -0700 2009 Initial commit to rack-uploads. [Mutwin Kraus]
file LICENSE Sat May 30 11:34:59 -0700 2009 Initial commit to rack-uploads. [Mutwin Kraus]
file README.rdoc Sat Jun 13 07:30:50 -0700 2009 rack-uploads now scans for uploads on all post ... [Mutwin Kraus]
file Rakefile Mon Jun 01 10:09:45 -0700 2009 gemspec [Mutwin Kraus]
file VERSION Tue Oct 13 03:14:57 -0700 2009 Version bump to 0.2.1 [Mutwin Kraus]
file init.rb Mon Jun 01 10:05:29 -0700 2009 preparing for first release [Mutwin Kraus]
directory lib/ Tue Oct 13 03:13:38 -0700 2009 Fix typo, thanks BrianTheCoder [Mutwin Kraus]
file rack-uploads.gemspec Tue Oct 13 03:17:58 -0700 2009 Bump version number in gemspec too [Mutwin Kraus]
directory spec/ Sat Jun 13 07:30:50 -0700 2009 rack-uploads now scans for uploads on all post ... [Mutwin Kraus]
README.rdoc

rack-uploads

rack-uploads is a middleware which receives uploads and stores them in in the Rack env for easy access.

It works with normal HTTP file uploads, as well as with the Nginx Upload Module.

All multipart params get replaced by a Rack::Uploads::UploadedFile, while still retaining access to the original parameter value.

Dependencies

Development dependencies:

  • rspec
  • rack-test

Usage

Sinatra

  use Rack::Uploads

  post "/uploads" do
    env['rack.uploads'].each do |upload|
      upload.mv('/some/path/#{upload.filename}')
    end
  end

Rails

  # config/environment.rb
  config.middleware.use "Rack::Uploads"

  # app/controller/uploads_controller.rb
  class UploadsController < ApplicationController
    def create
      request['rack.uploads'].each do |upload|
        upload.mv("#{RAILS_ROOT}/public/uploads/#{upload.filename}")
      end
    end
  end

Options

There are a few options you can pass to rack-uploads during initializiation:

:session_authorized => lambda { |req| req.params[‘secret’] == "sekrit" } - Only allow uploads with the parameter "secret" set to "sekrit"

:nginx => [{ :tmp_path => "_tmp_path", :filename => "_file_name" }] - Sets the suffixes of the nginx upload parameters

Copyright

Copyright © 2009 Mutwin Kraus. See LICENSE for details.