【发布时间】:2017-09-14 01:40:33
【问题描述】:
我在aws-sdk-ruby 的帮助下编写了一个Rails API,它从AWS 检索文件并在API 的响应中返回。我能否以某种方式获得响应 object.get 的文件流,我可以直接从 Rails API 返回。
s3 = Aws::S3::Resource.new
bucket_name = "my_bucket"
bucket = s3.bucket(bucket_name)
object = bucket.object("a/b/my.pdf")
Rails.logger.info 'Downloading file to AWS'
downloaded_data = object.get({})
send_data(downloaded_data,
:filename => "my.pdf",
:type => "mime/type"
)
但它不返回文件。
我知道的一个选项是首先使用以下行将文件保存在本地:
object.get(response_target: '/tmp/my.pdf')
我可以返回这个文件但是有没有办法跳过这一步直接返回object.get的响应而不保存在本地。
我不能使用this 解决方案,因为我的 URL 不是公开的,我只是在创建一个 REST API。
当我尝试this 解决方案时,出现如下屏幕。
【问题讨论】:
-
@AndreyDeineko,这个问题不同,因为已经有文件可以通过 URL 公开访问。
-
它对您不起作用吗?如果没有,我将重新提出问题。
-
@AndreyDeineko 就我而言,一件事是,我只有 REST API 返回文件,而不是完整的 Rails 应用程序,其次没有内容的公共 URL。
标签: ruby-on-rails ruby amazon-web-services amazon-s3 aws-sdk