【发布时间】:2016-12-10 03:44:24
【问题描述】:
我是 RoR 的新手。
我正在创建一个小应用程序,用于从 s3 存储桶上传、删除和下载 mp3 对象。 (使用 aws-sdk gem)。
我无法创建正确的下载控制器。我的应用正在下载一个名为 download 的文本文件,其中包含来自 s3 ( Aws::S3::Object:0x007feb59782368 ) 的 Object 引用。
我们将不胜感激!
这是我的代码:
控制器 >
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)
【问题讨论】:
-
你试过读出对象吗? aws.amazon.com/blogs/developer/…
-
今天早上我已经检查了无数次那个链接,但我无法让我的控制器工作......读取不起作用。
-
您是否尝试将对象写入临时文件,然后使用 send_file?我发现这是非常有效的。你是什么意思阅读不起作用?
-
我会考虑向 S3 url 发送 HTTP 302 并让客户端直接从 S3 下载对象。通过让您的应用程序服务器代理响应,这意味着您的 Rails 应用程序进程将被绑定,同时它们缓冲来自 s3 的对象,然后必须将其发送到管道
标签: ruby-on-rails ruby amazon-web-services controllers