时间:2019-06-20 14:31:38

标签: ruby-on-rails ruby amazon-s3

我对如何从aws s3获取文件而不将其写为文件但可能作为自动删除的临时文件感到困惑。所以我的朋友告诉我要逐块缓冲数据流并将其作为可下载文件发送到浏览器。

这是我下载文件的代码

 def download(key)
   File.open('filename', 'wb') do |file|
    s3.get_object(bucket: 'bucket-test', key:key) do |chunk|
     send_data(chunk,:type => application/pdf, :disposition => 'inline')
    end
   end
 end

它附带了,有关海马的错误无法转换为字符串。而我实际上并不了解。

实际上如何从aws(pdf文件)流式传输数据并将其作为可下载的pdf文件发送到浏览器?我的代码不符合我的意图吗?

谢谢你

1 个答案:

答案 0 :(得分:0)

只需将整个文件检索到内存中,然后将其发送出去:

response = s3.get_object(bucket: 'bucket-test', key: key)
send_data(response.body.read, type: application/pdf, disposition: 'inline')

此方法还具有重试网络错误的优点,因此,与禁用错误重试功能的分块方法相比,它更具弹性。