如何在Google云端存储中公开多个文件?

eng*_*uan 61 cloud google-cloud-storage

我在Google云端存储中有1000个文件可以公开,或者通常是目录层次结构.

在Web UI中,我似乎只能一次公开一个.

有没有办法做到这一点.

fej*_*jta 92

gsutil -m acl set -R -a public-read gs://bucket

  • 同时-m发出多个请求.
  • -R问题要求在你的水桶每个对象.
  • -a问题要求为每个对象的每个版本.

有关详情gsutil help acl,请参阅.

在API层,gsutil发出以下HTTP请求:

PUT /bucket/obj?acl HTTP/1.1
Host: storage.googleapis.com
x-goog-acl: public-read
Run Code Online (Sandbox Code Playgroud)

你可以通过使用-D标志来看到这个gsutil:

gsutil -D setacl public-read gs://bucket/obj
Run Code Online (Sandbox Code Playgroud)


una*_*ran 54

运行时:gsutil -m acl set -R -a public-read gs://bucket您为存储桶中当前所有对象定义公共读取,但是当您上传新文件时,默认情况下它们不会公开.

我发现值得将bucket默认acl定义为public-read gsutil defacl set public-read gs://bucket

  • `gsutil defacl set public-read gs:// bucket`适用于所有未来的文件,包括子目录中的文件.忽略Plastly Grove的评论. (5认同)
  • 好主意.不幸的是,这仅适用于顶级存储桶,不能用于存储桶中的文件夹.另一个答案甚至可以在文件夹上运行. (2认同)

小智 24

您可以将存储桶中的所有对象设为公共.这是链接.

  1. 在Google Cloud Platform Console中打开Cloud Storage浏览器.
  2. 在存储桶列表中,单击要公开的存储桶的名称.
  3. 选择页面顶部附近的"权限"选项卡.
  4. 单击"添加成员"按钮.
    将出现"添加成员"对话框.
  5. 在"成员"字段中,输入allUsers.
  6. 在"角色"下拉列表中,选择"存储"子菜单,然后单击"存储对象查看器"选项.
  7. 单击添加.

公开共享后,将为公共访问>列中的每个对象显示一个链接图标.您可以单击此图标以获取该对象的URL.

  • 这应该是正确的答案,因为如果您不知道自己在做什么,那么使用 gsutil 可能会产生意想不到的效果。 (2认同)

小智 10

完成此操作的最简单方法是使用控制台。

点击“编辑存储桶权限”

在此处输入图片说明

输入allUsers添加成员。然后Select Role> Storage>Storage Object Viewer

注意!这将向互联网上的所有人授予对该选定存储桶中所有对象的读取权限。

在此处输入图片说明

  • 感谢您提供屏幕截图,这确实很有帮助。 (2认同)

小智 9

2022 年 4 月更新:

您可以允许所有用户读取您存储桶中的文件。

例如,在存储桶详细信息中,单击“权限”,然后单击“添加”

在此输入图像描述

然后,输入“allUsers”

在此输入图像描述

然后,选择“Storage Legacy Object Reader”角色,以便所有用户都可以读取文件:

在此输入图像描述

然后,点击“保存”

在此输入图像描述

然后,系统会询问您如下所示,因此单击“允许公共访问”

在此输入图像描述

最后,您可以允许所有用户读取您存储桶中的文件:

在此输入图像描述


Mar*_*ana 8

有关在此处找到的托管静态网站的当前(2017年10月)文档指向:

gsutil acl ch -r -u AllUsers:R gs://bucket-name

在哪里-r做递归技巧并-u AllUsers:R给予公众读取访问权限.

  • 这也适用于子目录,例如`gsutil acl ch -r -u AllUsers:R gs://bucket-name/dir-name` (3认同)
  • 如果该目录有很多文件,则添加 `-m` 将使之位于 -- `gsutil -m acl ch -r -u AllUsers:R gs://bucket-name/dir-name` 之后 (2认同)