使用 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::Bucket
和 Google::Cloud::Storage::File
都有 #signed_url
方法。这样你就可以找到你需要的相关文件并创建一个临时的url,将url发送给客户端,客户端将负责直接下载文件。
如果你不希望客户端直接从Google云端下载文件你可以自己从GC下载文件,然后在#send_data
或#send_file
控制器。
我的音频文件位于私有 GCS 存储桶中。我想提供这些音频文件供用户收听。
我不能为此使用 Active Storage,因为这些文件 created/deleted 在我的 Rails 应用程序之外。
我可以使用 google-cloud-storage gem 下载文件。它将涵盖身份验证、文件下载。但是,如果我理解正确的话,我只能提供 public 目录中的文件吗?那么我需要将它们下载到 Rails.public_path
吗?
此外,我真的不想在下载这些文件后对其进行管理 - 缓存、一段时间后删除它们等
实现此目标的最佳方法是什么?
我认为最好的选择是使用 google-cloud-storage
gem,
因为 Google::Cloud::Storage::Bucket
和 Google::Cloud::Storage::File
都有 #signed_url
方法。这样你就可以找到你需要的相关文件并创建一个临时的url,将url发送给客户端,客户端将负责直接下载文件。
如果你不希望客户端直接从Google云端下载文件你可以自己从GC下载文件,然后在#send_data
或#send_file
控制器。