我的laravel中有一个函数可以在s3存储桶中上传和镜像:
$disk = Storage::disk('s3');
$disk->put($request->path . '/' . $request->file_name, base64_decode($request->file));
问题是无法访问新上传的图像。
现在,我public
在S3存储桶中有一个名为
我想要的是默认情况下,public
文件夹及其中的所有图像(旧的和新上传的)都可以公开访问。
要将文件夹在Amazon S3存储桶中设为“公共”,您可以将存储桶策略附加到存储桶:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Principal": "*",
"Action":"s3:GetObject",
"Resource":["arn:aws:s3:::my-bucket/my-folder/*"]
}
]
}
这样,任何人都可以GetObject
从my-bucket
存储桶中检索对象()(如果该对象在my-folder/
路径中)。
请注意,它并没有让桶的上市。因此,他们将需要知道对象的确切名称才能检索它。
要添加存储桶策略,您首先需要在存储桶上停用S3阻止公共访问以启用存储桶策略(第3和第4个选项)。
以上所有方法的替代方法是ACL=public-read
在Amazon S3中创建文件时进行设置。这使单个对象公开。(这样做需要禁用S3 Block Public Access的前两个选项。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句