0
我写了一个Rails API,在aws-sdk-ruby的帮助下,它从AWS中检索一个文件并返回API的响应。我可以通过object.get以某种方式得到文件流,我可以直接从Rails API返回。如何在Object.get中输出文件流
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公开访问。 – Saurabh
它不适合你吗?如果不是,我会重新提出这个问题。 –
@AndreyDeineko就我而言,有一件事,我只有REST API返回文件,而不是完整的Rails应用程序,其次没有内容的公共URL。 – Saurabh