无法使用Laravel将私有文件上传到s3存储桶/文件夹

时间:2020-03-03 19:49:27

标签: laravel amazon-s3

我的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'参数并没有使我的上传不公开。

我在做什么错了?

1 个答案:

答案 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'])
相关问题