gpt4 book ai didi

ruby-on-rails - 使用载波从 S3 下载图像(不打开)

转载 作者:数据小太阳 更新时间:2023-10-29 08:57:16 25 4
gpt4 key购买 nike

我正在使用 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 凭据一起使用。或替代解决方案。

最佳答案

我建议您使用 JavaScript 来下载任何数据(文件/图像)。

您可以对服务器进行 ajax 调用以获取 url。

#removed: target: '_self' no need it anymore
#added: remote: true
<%= link_to download_media_partnership_path(@partner, m: m.id), remote: true, data: {disable_with: "<i class='fa fa-spinner fa-spin media-icon'></i>"}
<i class="fa fa-download media-icon download" id=""></i>
<% end %>


def download_media
@media = TeamMedia.find(params[:m])
@url = @media.attachment.url

respond_to do |format|
format.js {}
end
end

Check this Link并实现到您的 JavaScript Assets 中。

不要忘记创建 download_media.js.erb 文件。

#download_media.js.erb

downloadFile("<%= @url %>");

关于ruby-on-rails - 使用载波从 S3 下载图像(不打开),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com