我正在尝试使用Laravel GCS wrapper将图片上传到GCS。我希望任何人都能看到上传的每张图片。我已将我的存储桶权限设置为读取和写入任何人。
如果我喜欢这样,它可以很好地工作,但图像不公开:
Storage::disk('gcs')->put($location, $image);
但是,如果这样做,应该上传图像并将其公开,则会抛出错误
403权限不足
Storage::disk('gcs')->setVisibility($filename, 'public')->put($location, $image);
所以->setVisibility()
给了我错误。
有人能解释我为什么吗?它是关于代码还是桶权限?
答案 0 :(得分:2)
当您说“我已将我的存储区权限设置为读取并写入任何人”时。我怀疑你的意思是你已经授予allUsers:WRITER / allUsers:传统存储桶ACL上的READER。
旧版ACL API不支持在存储桶级别授予对象级别权限。因此allUsers:桶上的READER只授予对象列表权限,它不授予对象获取权限。相反,您需要更改default_object_acl以授予对存储桶中创建的新对象的权限。
但是,您可能宁愿使用IAM来授予所需的权限,而不是使用旧版ACL API,因为这些权限将由存储桶中的所有对象继承,而不是在创建时设置在单个对象上。 / p>
gsutil iam ch allUsers:objectViewer gs://ex-bucket