Rails - 将私有文件上传到 Google 云存储
Rails - Upload private file to Google Cloud Storage
我正在做一个 Rails 项目,上传的文件存储在 Google 的云存储中(通过 Fog)。默认情况下上传的每个文件都选中了 "Public Link" 复选框,并且所有者的两个权限为 "Owner" 和 "allUsers" 的 "Reader"(我通过查看这些设置Google 开发控制台)。
我想做到这一点,当用户上传附件时,默认情况下 "Public Link" 复选框实际上是未选中的,并且 "allUsers" 没有权限。这可能吗?
是 - 您可以通过更改存储桶上的默认对象 ACL 来完成此操作。您可以使用 gsutil 命令执行此操作,例如:
gsutil defacl ch -d allUsers gs://your-bucket
这将删除对存储桶的默认对象 ACL 的 allUsers:R 授权,此后上传的对象将不可公开读取。
如果你想在运行这个命令之前或之后查看存储桶的默认对象ACL,你可以这样做:
gsutil defacl get gs://your-bucket
对于 :has_attached_file 选项,我添加了这个:
:fog_public => false
我正在做一个 Rails 项目,上传的文件存储在 Google 的云存储中(通过 Fog)。默认情况下上传的每个文件都选中了 "Public Link" 复选框,并且所有者的两个权限为 "Owner" 和 "allUsers" 的 "Reader"(我通过查看这些设置Google 开发控制台)。
我想做到这一点,当用户上传附件时,默认情况下 "Public Link" 复选框实际上是未选中的,并且 "allUsers" 没有权限。这可能吗?
是 - 您可以通过更改存储桶上的默认对象 ACL 来完成此操作。您可以使用 gsutil 命令执行此操作,例如:
gsutil defacl ch -d allUsers gs://your-bucket
这将删除对存储桶的默认对象 ACL 的 allUsers:R 授权,此后上传的对象将不可公开读取。
如果你想在运行这个命令之前或之后查看存储桶的默认对象ACL,你可以这样做:
gsutil defacl get gs://your-bucket
对于 :has_attached_file 选项,我添加了这个:
:fog_public => false