加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 允许用户从S3存储中下载文件

发布时间:2020-12-16 20:20:34 所属栏目:百科 来源:网络整理
导读:现在我正在使用Amazon S3和Paperclip,它允许我的用户上传与他们正在创建的事件相关联的图像.我的最终目标是因为其他人可以查看此事件,以便能够点击图像,并将其提示保存到他们的计算机.到目前为止,点击链接将在浏览器窗口中打开图像.我宁愿要求他们下载.所有
现在我正在使用Amazon S3和Paperclip,它允许我的用户上传与他们正在创建的事件相关联的图像.我的最终目标是因为其他人可以查看此事件,以便能够点击图像,并将其提示保存到他们的计算机.到目前为止,点击链接将在浏览器窗口中打开图像.我宁愿要求他们下载.所有图像仅保存在S3,而不是本地.需要隐藏暴露的s3 url,如果可能,或伪装它

这是我当前的设置

的index.html

<%= link_to 'Download Creative',event.creative.url,class: "btn btn-info" %>

Event.rb

has_attached_file :creative,:styles => { :thumb => "150x150",:custcreative => "250x75" },:path => ":attachment/:id/:style.:extension",:s3_domain_url => "******.s3.amazonaws.com",:storage => :s3,:s3_credentials => Rails.root.join("config/s3.yml"),:bucket => '*****',:s3_permissions => :public_read,:s3_protocol => "http",:convert_options => { :all => "-auto-orient" },:encode => 'utf8'

希望有人能帮助我.

解决方法

为了使这项工作,我刚刚在控制器中添加了一个新的动作,所以在你的情况下可能是:
#routes
resources :events do
  member { get :download }
end

#index
<%= link_to 'Download Creative',download_event_path(event),class: "btn btn-info" %>

#events_controller
def download
  data = open(event.creative_url)
  send_data data.read,:type => data.content_type,:x_sendfile => true
end

编辑:
下载控制器操作的正确解决方案可以在这里找到(我已经更新了上面的代码):Force a link to download an MP3 rather than play it?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读