1

こんにちは皆さん、私は自分のファイルが公開されないようにしたいというデジタルオーシャンに固執しました。

初めに。このように.envファイルを設定します

DO_SPACES_KEY= THE KEY
DO_SPACES_SECRET= THE SECRET
DO_SPACES_ENDPOINT=https://sgp1.digitaloceanspaces.com
DO_SPACES_REGION=sgp1
DO_SPACES_BUCKET= MY BUCKET NAME
DO_SPACES_URL=https://mydomain.sgp1.digitaloceanspaces.com

次に、 config->filesystem.php を設定します

'do_spaces' => [
    'driver' => 's3',
    'key' => env('DO_SPACES_KEY'),
    'secret' => env('DO_SPACES_SECRET'),
    'region' => env('DO_SPACES_REGION'),
    'bucket' => env('DO_SPACES_BUCKET'),
    'url' => env('DO_SPACES_URL'),
    'endpoint' => env('DO_SPACES_ENDPOINT'),
    'visibility' => 'public',
],

その後、コントローラーにファイルを保存させます

    //convert image name
    $stringImageReFormat=base64_encode('_'.time());
    $ext=$request->file('image')->getClientOriginalExtension();
    $imageName=$stringImageReFormat.".".$ext;
    $imageEncoded=File::get($request->image);

    //upload & insert
     Storage::disk('do_spaces')->put('public/user_image/'.$imageName,$imageEncoded);

    // Insert Data to Table
    $user=new User();
    $user->image=$imageName;
    $user->save();

ブレード テンプレートでは、次のようにファイルを取得します

{{ Storage::disk('do_spaces')->url('public/user_image/'.$user->image) }}

これは、可視性をパブリックに設定しない場合に得られるものです

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<BucketName>mybucket</BucketName>
<RequestId>tx0000000000000088d0617-00607228ae-13200e4-sgp1b</RequestId>
<HostId>13200e4-sgp1b-sgp1-zg02</HostId>
</Error>

filesystem.php の可視性を public に設定した場合。認証なしでファイルを見ることができます。

助けやアドバイスをよろしくお願いします。

4

0 に答える 0