使用 Ruby aws-sdk 跟踪文件到 S3 的上传进度

2024-05-16

首先,我知道SO中有很多与此类似的问题。在过去的一周里,我读了大部分(如果不是全部)。但我仍然无法让这项工作为我工作。

我正在开发一个 Ruby on Rails 应用程序,允许用户将 mp3 文件上传到 Amazon S3。上传本身工作正常,但进度条将大大改善网站的用户体验。

我正在使用 aws-sdk gem,这是亚马逊的官方宝石。我在上传过程中到处查看了其文档中的回调,但我找不到任何东西。

文件一次一个地直接上传到 S3,因此不需要将其加载到内存中。也无需上传多个文件。

我想我可能需要使用 JQuery 来完成这项工作,我对此很满意。 我发现这看起来很有希望:https://github.com/blueimp/jQuery-File-Upload https://github.com/blueimp/jQuery-File-Upload我什至尝试按照这里的例子:https://github.com/ncri/s3_uploader_example https://github.com/ncri/s3_uploader_example

但我就是无法让它为我工作。

aws-sdk 的文档还简要描述了使用块进行流式上传:

  obj.write do |buffer, bytes|
     # writing fewer than the requested number of bytes to the buffer
     # will cause write to stop yielding to the block
  end

但这几乎没有帮助。如何“写入缓冲区”?我尝试了一些直观的选项,但总是会导致超时。我该如何根据缓冲来更新浏览器?

有没有更好或更简单的解决方案?

先感谢您。 对于这个问题的任何帮助,我将不胜感激。


将块传递给 #write 时生成的“缓冲区”对象是 StringIO 的实例。您可以使用#write 或#

file = File.open('/path/to/file', 'r')

obj = s3.buckets['my-bucket'].objects['object-key']
obj.write(:content_length => file.size) do |buffer, bytes|
  buffer.write(file.read(bytes))
  # you could do some interesting things here to track progress
end

file.close
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ruby aws-sdk 跟踪文件到 S3 的上传进度 的相关文章

  • HTML5进度条动画

    我在我的应用程序中使用 HTML5 进度条 我想知道是否有什么方法可以控制进度条的动画速度 我想在一定时间间隔后显示进度 我使用 javascript 的 setTimeout 方法做到了这一点 以便它在屏幕渲染后设置值 但动画太快了 有什
  • 水豚找不到元标签

    Capybara 2 1 0 似乎没有找到任何元标记 rdb 1 p page find meta Capybara ElementNotFound Exception Unable to find css meta 即使他们出现在page
  • ActiveRecord oracle_enhanced 适配器无法加载 ruby​​-oci8 库

    rails g scaffold失败 但 oci 脚本和 irb 数据查询有效 无法弄清楚出了什么问题 rails g scaffold table field1 integer field2 string invoke active re
  • Rails 3.0.0.beta 和 Facebooker:还有其他人看到以下内容吗?

    我的 Rails 服务器在安装 facebooker 插件后似乎崩溃了 任何有关解决此问题的建议都会很棒 我正在使用 Rails 3 0 0 beta 和 facebooker 以下是我看到的步骤和错误 rails v Rails 3 0
  • 如何使用 symfony / gauferette / VichUploaderBundle 将文件上传到 Google Cloud Storage

    早上好 我正在上传我的文件locally通过VichUploaderBundle 每件事都很完美 现在我不想再在本地存储我的文件 我想将它们存储在谷歌云存储 我找到KnpGaufrette捆绑包可用于在云中存储文件 那么 有没有关于如何配置
  • 将文件从 url 上传到 s3 存储桶

    我有一个在 Heroku 中运行的 Nodejs 程序 它为我提供了文件的 URL 这些文件需要存储在 s3 存储桶中 据我了解 无法将文件从 url 直接上传到 s3 存储桶 您建议我如何将文件从 URL 获取到 s3 存储桶 我见过有关
  • Rails f.check_box 设置选中/未选中值

    所以我在 Rails 中得到了一个带有复选框的表单助手 我希望该复选框在选中或取消选中时具有 thatvalue 或 thisvalue 值 我还没有找到如何设置它的地方 f check box field 我发现了类似的东西 但它不起作用
  • 使用 AWS Lambda 从 AWS S3 读取并提取巨大的 zip 文件

    我正在开发数据管理应用程序 客户可以上传zip file approx 250 MB 与多个text files approx 1500 MB on AWS S3 但由于记忆有限aws lamda 最大 1536MB 大小 我能够提取 50
  • 为什么 Rails 5 将“索引”更改为“外键”?

    如果你在 Rails 4 中有这个 t references event index true 现在你可以使用foreign key代替index在 Rails 5 中 我不太明白为什么他们决定这样做 因为功能保持不变 您添加的是索引 而不
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • 设备注册控制器获取零资源的自定义操作

    基本上我想要有两个单独的操作来更改密码和更改电子邮件 而不是只有一个 我已经更新了我的路由以指向继承自 Devise RegistrationsController 的新控制器 我的路线 rb devise for users contro
  • SIM800C GSM AT 命令如何以编程方式上传 .amr 音频文件

    我拼命尝试将一些音频文件上传到SIM800C的内部存储器 到目前为止 这是我能够做到的 但上传的文件似乎无效 并且不播放任何声音 但与AT FSLS C 我可以看到该文件就在那里 以下是我使用的 AT 命令 AT FSCREATE tts2
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • Ruby on Rails 3 - 为每个请求重新加载 lib 目录

    我正在为 Rails 3 应用程序创建一个新引擎 正如您所猜测的 该引擎位于我的应用程序的 lib 目录中 但是 我在开发它时遇到了一些问题 事实上 每次更改引擎中的某些内容时 我都需要重新启动服务器 有办法避免这种情况吗 我可以强制rai
  • Rails Capistrano 3 - 如何将 production.log 文件共享到 Capistrano 的共享文件夹中?

    我正在使用 Capistrano 3 与我的 Rails 应用程序一起部署 问题是 每次我将应用程序部署到服务器时 log development log 文件都会重置 我听说可以将 production log 文件放入共享文件夹中并在每
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • 有时您可能需要重新启动 Webrick 才能看到所做的更改,这是否正确?

    我听 Kevin Skoglund lynda com 说 养成在开发过程中频繁重新启动 Webrick 的习惯是一个很好的习惯 虽然通常您不需要重新启动 Webrick 来查看更改 但他暗示在某些特殊情况下可能需要这样做 有谁知道这些情况
  • Rails 3.1 和图像资源

    我已将管理主题的所有图像放入名为 admin 的文件夹内的资产文件夹中 然后我像平常一样链接到它 Ruby image tag admin file jpg CSS logo background url assets images adm
  • Rails 4 的 mobile_fu

    我正在尝试将我的应用程序从 Rails 3 2 13 切换到 Rails 4 在此过程中 我遇到了一个主要障碍 我使用 gem mobile fu 来确定用户是否来自移动设备 该 gem 需要 Railties 3 2 13 但 Rails
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end

随机推荐