S3BrowserUploads

Easy straight-to-s3 uploads from your browser for rails. Takes care of policy documents and all that jazz

Example Usage

In your controller

@form_definition = S3BrowserUploads::FormDefinition.new :aws_access_key_id => 'Somekey'
@form_definition.add_field('x-amz-server-side-encryption', 'AES256')
@form_definition.add_field('key', 'users/fred/${filename}')
@form_definition.add_condition('key', 'starts-with' => 'users/fred/')

In your view

<%= s3_form @form_definition do %> 

  <%= file_field_tag :file %>
  <%= submit_tag 'Upload' %>
<% end %>

Details

Every field in your form must be signed as part of the policy document in order for S3 to accept the upload.

Call add_field to add a hidden field both to the form and to the policy document. If you want to add the field yourself then call add_condition to add the field to the policy document. For example if you wanted to allow the user to choose the acl for the file then you would do

@form_definition.add_condition 'acl', 'starts-with' => ''

This adds acl to the policy document and states that it can take any value. Then you'd need to add an input to the form that would allow the user to choose the acl.