I set up my Rails app to upload files directly to AWS S3 using this tutorial and it works great. Now I'm working on the direct download piece using the same approach in this SO post. When I try and trigger the download it hangs and then finally returns the following error:
fatal at /user/doc_uploads/download exception reentered
The puts
in the code below show what appears to be an infinite loop on the server. I simply don't know enough about how this code is supposed to work to figure this out. Please help!
doc_uploads_controller.rb
def get
@doc_download = @user.doc_uploads.find_by_id(params[:id])
if @doc_download
key = @doc_download.file_url.split('amazonaws.com/')[1]
puts key
puts S3_BUCKET_NAME
bucketlink = S3_BUCKET_NAME.object(key).presigned_url(:get, expires_in: 3600)
puts bucketlink
redirect_to bucketlink
else
flash[:error]="Something went wrong."
redirect_to user_dashboard_path
end
end
aws.rb:
Aws.config.update({
region: 'us-east-1',
credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']),
})
S3_BUCKET_NAME = Aws::S3::Resource.new.bucket(ENV['S3_BUCKET_NAME'])
routes.rb:
get 'user/doc_uploads/download', to: 'doc_uploads#get'
view:
<% @doc_uploads.each do |doc_upload| %>
...
<%= link_to user_doc_uploads_download_path(id: doc_upload.id), target: '_blank' do %>
<p class="glyphicon glyphicon-download-alt"></p>
<% end %>
...
<% end %>
Thanks in advance!