上传到谷歌云存储中的嵌套存储桶

raz*_*yed 2 ruby google-api-client google-cloud-storage

在谷歌云存储中,我在名为图像的根存储桶中放置了名为猫的存储桶。我使用 google-api-ruby-client gem 上传文件。我可以将文件上传到根存储桶“images”,但无法上传到“images/cats”。我知道谷歌云存储中的存储桶没有斜线的概念,所以我无法弄清楚如何指定嵌套存储桶的名称。

result = client.execute(
  api_method: api.objects.insert,
  media: media,
  parameters: {
    uploadType: 'resumable',
    bucket: 'images/cats',  #This does not work !. Just images works.
    name: 'kitty.jpeg',
  },
  body_object: {contentType: 'image/jpeg'}
)
Run Code Online (Sandbox Code Playgroud)

这给出了错误NoMethodError: undefined method query_values for nil:NilClass。如果我只使用“图像”作为存储桶的值,则该代码有效。

我怎样才能使上传工作也适用于嵌套存储桶?

谢谢

Mik*_*rtz 5

Google Cloud Storage 没有真正的目录——它有一个平面命名空间。您可以通过在对象名称中使用“/”字符并在列出存储桶时使用前缀和分隔符查询来部分模拟目录。

您看到的问题是由存储桶名称不能包含“/”这一事实引起的。尝试使用以“cats/”开头的存储桶“图像”和对象名称。