首页 文章

在Laravel上传后,将aws s3文件权限设置为public

提问于
浏览
0

我正在开发一个Web应用程序 . 在我的应用程序中,我正在实现文件上传功能 . 我将上传的文件存储在aws s3存储桶中 . 我将文件上传到s3存储桶,如下所示 .

$photo_file_path = $request->file('image_file')->store(
            'images/artworks/gallery-images/'.uniqid(),  's3'
          );

上面的代码工作正常 . 该文件上传到s3 . 但问题是我希望文件在上传到s3时是公开的,这样照片也可以从网址访问 . 我将桶策略和访问控制都设置为public .

这是我的桶政策

{
    "Version": "2012-10-17",
    "Id": "Policy1234566788",
    "Statement": [
        {
            "Sid": "Stmt151234344545",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket"
        }
    ]
}

正如您所看到的,我的存储桶现已公开用于访问控制和存储桶策略 .
enter image description here

但是当我从Laravel上传文件时,它会上传到存储桶,但文件仍然是公开的 . 那么,文件上传后如何将文件权限更改为public?

1 回答

  • 2

    Laravel提供了不同的方法来存储文件 .

    最简单的方法之一是使用 storePublicly() .

    这是一个例子

    $photo_file_path = $request->file('image_file')->storePublicly(
            'images/artworks/gallery-images/'.uniqid()
          );
    

    希望这可以帮助 .

相关问题