如何在Rails的ActiveStorage中获取供谷歌云服务使用的GCS URL?
获取ActiveStorage中GCS对象的gs://格式URL
要生成Google Cloud Storage(GCS)要求的gs://格式URL,你可以直接通过ActiveStorage的Blob对象结合存储桶名称拼接得到,具体操作如下:
- 先获取附件对应的Blob实例:比如你的模型是
Video,关联了has_one_attached :media_file,那么可以通过video.media_file.blob拿到Blob对象。 - 从Blob的存储服务实例中提取存储桶名称,再结合Blob的
key(即对象在GCS中的存储路径)拼接出目标URL。
示例代码(可封装为模型方法):
class Video < ApplicationRecord has_one_attached :media_file def gcs_gs_url return nil unless media_file.attached? blob = media_file.blob bucket_name = blob.service.bucket.name "gs://#{bucket_name}/#{blob.key}" end end
调用video.gcs_gs_url就能得到类似gs://your-bucket-name/abc123xyz/your-file.mp4的URL,完全满足视频智能API这类Google服务的输入要求。
注意:需确保你的GCS存储桶已配置正确IAM权限,允许视频智能API的服务账号访问目标对象(通常赋予storage.objects.viewer角色即可)。
内容的提问来源于stack exchange,提问作者Patrick Vellia
相关产品推荐
相关产品推荐

