ruby-on-rails - 如何让rails逐块从aws s3中获取数据并将其作为pdf下载文件发送到ti浏览器?
问题描述
我对如何从 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文件发送到浏览器?我的代码不是我想要的吗?
非常感谢你
解决方案
只需将整个文件检索到内存中,然后将其发送出去:
response = s3.get_object(bucket: 'bucket-test', key: key)
send_data(response.body.read, type: application/pdf, disposition: 'inline')
此方法还具有重试网络错误的好处,因此它比禁用重试错误的分块方法更具弹性。
推荐阅读
- botframework - MS TEAMS 的消息扩展应用程序应该知道名册
- flutter - 使用堆栈小部件在中心锚定动画小部件
- java - 从 Unix 到 Windows 的 Selenium 测试
- tfs - Azure DevOps 服务器/TFS 监视器计数并列出项目集合中声明的字段
- plugins - 如何在 nopcommerce 4.2 中通过插件创建产品的新令牌(当前 URL)?
- python - 在循环内使用 lambda 迭代列
- java - Java程序查找用户使用方法输入的项目的索引
- php - Woocommerce:如果产品具有致敬价值,则以编程方式添加链接
- algorithm - 按两个字段索引排序
- javascript - 如何禁用后退和下一个分页按钮?