【问题标题】:Accessing locally stored active storage files in production在生产中访问本地存储的活动存储文件
【发布时间】:2020-02-25 05:08:01
【问题描述】:

我有一个在 Heroku 上运行的 rails 6 应用程序,用于捕获视频并上传它们。一个典型的用例是用户制作视频然后上传。为此,我已成功使用 active storage 直接上传到 Amazon S3。

但是,用户可能使用较慢的移动链接,因此希望稍后在使用宽带链接时上传视频。我使用的模型如下:

class Lesson
   has_one_attached :video
   ...
end

用户通过点击此代码生成的链接制作视频:

<%= simple_form_for@lesson) do |f| %>
   <%= f.file_field :video, id: 'video_file', direct_upload: true %>  
   ...
<% end %>

如果在附加文件之后但在提交表单之前检查lesson.video,它似乎具有包含存储视频的本地文件地址的数据结构。

我能否以某种方式将信息保存在 lesson.video 中,然后稍后将文件上传到 Amazon S3?

【问题讨论】:

  • 使用 scheduler 或 sidekiq 并提供选项,例如稍后或在特定日期和时间上传。
  • 如果以这种方式完成,是否必须立即将活动作业 blob 上传到 heroku 才能按计划完成作业?如果是这样,说明它还在使用低移动链接上传?

标签: rails-activestorage


【解决方案1】:

为了提高 S3 上传速度,我们需要做以下事情:

  • 在您的 S3 存储桶上启用传输加速。

  • 将您的应用程序更改为使用 S3 Multipart Upload 上传 multiple parts 中的文件,并使用多线程一次上传多个部分。

Enable Transfer Acceleration

S3 Multipart Upload

【讨论】:

  • 如果我找不到问题的答案,这将很有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2017-10-13
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2019-08-03
相关资源
最近更新 更多