我的Laravel项目中有以下代码:
$filename = 'bagel-corp-nda.pdf';
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename),'private');
当我触发此代码时,任何人都可以进入链接https://confidential-agreements.s3.ca-central-1.amazonaws.com/agreements/bagel-corp-nda.pdf
,查看上载的PDF。 'private'
参数并没有使我的上传不公开。
我在做什么错了?
答案 0 :(得分:0)
根据此forum thread,默认情况下,可见性实际上是私有的。
默认情况下,所有对象都是私有的:只有所有者拥有完全控制权。添加新对象时,您可以向单个AWS账户或预定义的Amazon S3组授予权限。
以上引用来自Amazon's S3 API Documentation,该帖子支持该论坛主题。
所以您应该尝试不使用第三个参数就简单地调用它,就像这样:
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename))
并确保您的s3磁盘配置没有'visibility' => 'public'
如果仍然无法使用,则可以尝试遵循API文档并使用
// Untested
Storage::disk('s3')->put('agreements/'.$filename, file_get_contents($filename), ['x-amz-acl' => 'private'])