【发布时间】:2018-07-27 23:16:08
【问题描述】:
我正在使用 Carrierwave 将我的图像上传到 S3,效果很好。我希望用户单击“下载”链接,该链接将自动从 S3 下载图像。
目前有效:
media.html.erb
<%= link_to download_media_partnership_path(@partner, m: m.id), target: '_self', data: {disable_with: "<i class='fa fa-spinner fa-spin media-icon'></i>"}
<i class="fa fa-download media-icon download" id=""></i>
<% end %>
partnership_controller.rb
def download_media
@media = TeamMedia.find(params[:m])
file_data = open(@media.attachment.url)
send_data file_data.read, filename: "#{@media.name}", type: @media.attachment.content_type, disposition: 'attachment'
end
team_media.rb
mount_uploader :attachment, TeamMediaUploader
问题是open(@media.attachment.url) 导致应用程序在发送给用户之前先下载文件。用户将下载视频,因此需要很长时间才能获得“下载”弹出窗口。
我可以通过什么方式编辑上述内容以像 this answer 一样工作,这样我的应用程序就不必先下载?我无法让它与 Carrierwave 凭据一起使用。或替代解决方案。
【问题讨论】:
-
你想通过浏览器下载?
-
@ErvalhouS 您会注意到它略有不同。我确实在我的问题的链接中引用了该问题。我需要能够做到这一点 qith Carrierwave
-
@7urkm3n 是的,无需自己从 S3 下载媒体
标签: ruby-on-rails ruby amazon-s3 download carrierwave