使用 Rails 从 GCS 提供音频文件

Serve audio file from GCS with Rails

我的音频文件位于私有 GCS 存储桶中。我想提供这些音频文件供用户收听。

我不能为此使用 Active Storage,因为这些文件 created/deleted 在我的 Rails 应用程序之外。

我可以使用 google-cloud-storage gem 下载文件。它将涵盖身份验证、文件下载。但是,如果我理解正确的话,我只能提供 public 目录中的文件吗?那么我需要将它们下载到 Rails.public_path 吗?

此外,我真的不想在下载这些文件后对其进行管理 - 缓存、一段时间后删除它们等

实现此目标的最佳方法是什么?

我认为最好的选择是使用 google-cloud-storage gem, 因为 Google::Cloud::Storage::BucketGoogle::Cloud::Storage::File 都有 #signed_url 方法。这样你就可以找到你需要的相关文件并创建一个临时的url,将url发送给客户端,客户端将负责直接下载文件。

如果你不希望客户端直接从Google云端下载文件你可以自己从GC下载文件,然后在#send_data#send_file控制器。