使用 ActiveStorage 提供直接上传到 S3 的视频

Use ActiveStorage to serve videos directly uploaded to S3

我正在使用 ActiveStorage 以允许用户将视频上传到 Amazon S3 并供他们日后观看。这些视频是模型课的附件。

#app/models/lesson.rb
class Lesson
  has_one_attached :video
end

用于流式传输视频的html是

<video controls class='video_size'>
  <source src=<%= rails_blob_path(lesson.video) %> type='video/mp4' />
</video>

但是,我创建了一些视频,希望允许用户观看。这些视频已经直接上传到同一个 S3 存储桶,所以我知道视频的亚马逊url。

有没有一种方法可以使用这些已知的 url 直接创建 ActiveStorage blob,即

@special_blob = create_blob_from_amazon_url(amazon_url)

然后在视图中

<video controls class='video_size'>
   <source src=<%= rails_blob_path(@special_blob) %> type='video/mp4' />
</video>

还是我必须使用 ActiveStorage 上传视频才能创建 blob?

我想你要找的是 #build/create_after_upload! :

https://medium.com/weareevermore/manual-uploads-using-activestorage-47808dab1b65

https://apidock.com/rails/v6.0.0/ActiveStorage/Blob/create_after_upload%21/class