module AwsUpload::FormHelper
This module creates aws direct upload form helper
Examples¶ ↑
Generate a form to upload a file with the name of “uploaded_file.jpg” <%= aws_upload_form
(:image, “uploaded_file.jpg”) %>
Generate a form to upload a file with the uploaded file name <%= aws_upload_form
(:image, “${filename}”) %>
You can specify options. It will override the options specified in the configuration. <%= aws_upload_form
(:image, “uploaded_file.jpg”, acl: “private”, metadata: {original-filename: ‘${filename’}) %>
You can customize file and submit input by giving a block. <%= aws_upload_form
(:image, “uploaded_file.jpg”) do %>
<input type="file" name="file"> <input type="submit" value="Upload">
<% end %>
Public Instance Methods
aws_upload_form(name, object_key, options={}) { || ... }
click to toggle source
# File lib/aws_upload/form_helper.rb, line 25 def aws_upload_form(name, object_key, options={}) # Load credentials if AwsUpload.aws_access_key_id creds = Aws::Credentials.new(AwsUpload.aws_access_key_id, AwsUpload.aws_secret_access_key) else # Use shared credentials if aws_access_key_id is not specified creds = Aws::SharedCredentials.new() end region = AwsUpload.aws_region uploader = AwsUpload.uploader(name) opts = uploader.options.deep_merge(options) opts[:key] = uploader.key_prefix + object_key post = Aws::S3::PresignedPost.new(creds, region, uploader.bucket, opts) form = "<form action='#{post.url.to_s}' method='post' enctype='multipart/form-data'>\n" post.fields.each do |key, value| form << "\t<input type='hidden' name='#{key}' value='#{value}'>\n" end # render file and submit inputs. yield block if a block is given. if block_given? form << yield else form << "\t<input type='file' name='file'>\n" form << "\t<input type='submit' value='upload'>\n" end form << "</form>" form.html_safe end