Php 上载期间设置文件可见性时出现Google云存储权限错误
我正在尝试使用将图像上载到地面军事系统。我希望上传的每个图像对任何人都可见。我已将我的bucket权限设置为对任何人进行读写 如果我喜欢这样做,它可以完美地工作,但图像不是公开的:Php 上载期间设置文件可见性时出现Google云存储权限错误,php,laravel,google-cloud-platform,google-cloud-storage,lumen,Php,Laravel,Google Cloud Platform,Google Cloud Storage,Lumen,我正在尝试使用将图像上载到地面军事系统。我希望上传的每个图像对任何人都可见。我已将我的bucket权限设置为对任何人进行读写 如果我喜欢这样做,它可以完美地工作,但图像不是公开的: Storage::disk('gcs')->put($location, $image); 然而,如果这样做,应该上传图片并公开,它会抛出错误 403权限不足 所以->setVisibility()给了我一个错误 谁能解释一下原因吗?是关于代码还是bucket权限?当你说“我已将我的bucket权限设置为对任
Storage::disk('gcs')->put($location, $image);
然而,如果这样做,应该上传图片并公开,它会抛出错误
403权限不足
所以->setVisibility()
给了我一个错误
谁能解释一下原因吗?是关于代码还是bucket权限?当你说“我已将我的bucket权限设置为对任何人进行读写”时,我怀疑你的意思是你已经在旧bucket ACL上授予了allUsers:WRITER/allUsers:READER
旧ACL API不支持在bucket级别授予对象级别权限。因此,allUsers:bucket上的读卡器只授予object list权限,而不授予object get权限。相反,您需要更改默认的_object _acl,以向bucket中创建的新对象授予权限
但是,您可能宁愿使用IAM来授予所需的权限,而不是使用旧的ACL API,因为这些权限将由bucket中的所有对象继承,而不是在创建时对单个对象进行设置
gsutil iam ch alluser:objectViewer gs://ex bucket
当您说“我已将我的bucket权限设置为对任何人的读写权限”时,我怀疑您的意思是您已在旧bucket ACL上授予了alluser:WRITER/alluser:READER
旧ACL API不支持在bucket级别授予对象级别权限。因此,allUsers:bucket上的读卡器只授予object list权限,而不授予object get权限。相反,您需要更改默认的_object _acl,以向bucket中创建的新对象授予权限
但是,您可能宁愿使用IAM来授予所需的权限,而不是使用旧的ACL API,因为这些权限将由bucket中的所有对象继承,而不是在创建时对单个对象进行设置
gsutil iam ch alluser:objectViewer gs://ex bucket
是否删除了“setVisibility”调用?不再需要了。您只需要调用'Storage::disk('gcs')->put($location,$image);'而且文件应该是公开可读的。哦,我的错。所以基本上所有上传的图片现在都对任何人具有读取权限?您是否删除了“setVisibility”调用?不再需要了。您只需要调用'Storage::disk('gcs')->put($location,$image);'而且文件应该是公开可读的。哦,我的错。那么基本上所有上传的图片现在都有了对任何人的阅读权限?
Storage::disk('gcs')->setVisibility($filename, 'public')->put($location, $image);