繁体   English   中英

Rails从Amazon Bucket S3 AWS-SDK下载对象

[英]Rails download objects from amazon bucket s3 aws-sdk

我是RoR的新手。

我正在创建一个小型应用程序,可以从s3存储桶中上传,删除和下载mp3对象。 (使用aws-sdk gem)。

我无法创建正确的下载控制器。 我的应用正在从s3(Aws :: S3 :: Object:0x007feb59782368)下载带有对象引用的文本文件download。

所有帮助将不胜感激!

这是我的代码:

控制器>

  def download
    bucket = S3.bucket(S3_BUCKET.name)
    obj = bucket.object(params[:song])
    byebug
    send_data obj
  end

查看>

<%= link_to "download", "songs/download/?song=" + song.name %>

和byebug的响应:

(byebug) send_data obj
  Rendering text template
  Rendered text template (0.0ms)
Sent data  (2.2ms)
"#<Aws::S3::Object:0x007fc3b1323c60>"
(byebug) 

尝试使用send_file而不是send_data

我考虑将HTTP 302发送到S3网址,并让客户端直接从S3下载对象。 通过让您的应用服务器代理响应,这意味着您的Rails应用程序进程将被束缚,同时它们会缓冲s3中的对象,然后将其沿着管道发送。 如果担心安全性(不想公开公开s3对象),则将其保密,并为有效期短的对象生成一个签名URL。

最简单的选择是创建一个与文件源的链接。 当他们单击该链接时,它将以新的水龙头打开并自动从S3下载。

另一个选择是使用下载功能,但我尚未阅读文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM