Guest User

Untitled

a guest
Jun 25th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. # frozen_string_literal: true
  2.  
  3. # Creates a new blob on the server side in anticipation of a direct-to-service upload from the client side.
  4. # When the client-side upload is completed, the signed_blob_id can be submitted as part of the form to reference
  5. # the blob that was created up front.
  6. class ActiveStorage::DirectUploadsController < ActiveStorage::BaseController
  7. skip_before_action :verify_authenticity_token, :only => [:create]
  8.  
  9. def create
  10. blob = ActiveStorage::Blob.create_before_direct_upload!(blob_args)
  11. render json: direct_upload_json(blob)
  12. end
  13.  
  14. private
  15. def blob_args
  16. params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, :metadata).to_h.symbolize_keys
  17. end
  18.  
  19. def direct_upload_json(blob)
  20. blob.as_json(root: false, methods: :signed_id).merge(direct_upload: {
  21. url: blob.service_url_for_direct_upload,
  22. headers: blob.service_headers_for_direct_upload
  23. })
  24. end
  25. end
Add Comment
Please, Sign In to add comment