houdini/app/controllers/aws_presigned_posts_controller.rb

26 lines
736 B
Ruby
Raw Normal View History

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
class AwsPresignedPostsController < ApplicationController
before_action :authenticate_user!
# post /presigned_posts
# Create some keys using the AWS gem so the user can do direct-to-S3 uploads
# http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/S3/PresignedPost.html
def create
uuid = SecureRandom.uuid
p = S3Bucket.presigned_post(
key: "tmp/#{uuid}/${filename}",
success_action_status: 201,
acl: 'public-read',
expiration: 30.days.from_now
)
render json: {
s3_presigned_post: p.fields.to_json,
s3_direct_url: p.url,
s3_uuid: uuid
}
end
end