上传期间设置文件可见性时出现Google云存储权限错误

时间:2017-11-30 11:35:16

标签: php laravel google-cloud-platform google-cloud-storage lumen

我正在尝试使用Laravel GCS wrapper将图片上传到GCS。我希望任何人都能看到上传的每张图片。我已将我的存储桶权限设置为读取和写入任何人。

如果我喜欢这样,它可以很好地工作,但图像不公开:

Storage::disk('gcs')->put($location, $image);

但是,如果这样做,应该上传图像并将其公开,则会抛出错误

  

403权限不足

Storage::disk('gcs')->setVisibility($filename, 'public')->put($location, $image);

所以->setVisibility()给了我错误。

有人能解释我为什么吗?它是关于代码还是桶权限?

1 个答案:

答案 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