Laravel
DigitalOcean Spaces (aws) file upload and private file get
Storage olarak digitalOcean spaces nasıl kullanılır?
Laravel entegrasyonuna paketi kurarak başlayalım.
composer require league/flysystem-aws-s3-v3 "^3.0"
Composer paketini kurduktan sonra env aws bilgilerini ekleyiniz.
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=nyc3
AWS_BUCKET=
AWS_ENDPOINT=https://nyc3.digitaloceanspaces.com
AWS_USE_PATH_STYLE_ENDPOINT=false
Daha sonra ise config/fileystem.php dosyasında yer alan s3 array şu şekilde düzenleyelim.
's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'endpoint' => env('AWS_ENDPOINT','nyc3.digitaloceanspaces.com'),
'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
'digitalocean' => [ 'driver' => 's3', 'key' => env('DIGITALOCEAN_SPACES_KEY'), 'secret' => env('DIGITALOCEAN_SPACES_SECRET'), 'endpoint' => env('DIGITALOCEAN_SPACES_ENDPOINT'), 'region' => env('DIGITALOCEAN_SPACES_REGION'), 'bucket' => env('DIGITALOCEAN_SPACES_BUCKET')]
],
Evet şimdi ise yükleme işlemini gerçekleştirelim
Burada bu şekilde dosyanızı kaydedebilir ve 2.satırdaki path ile direk erişebilirsiniz.
Peki public değilde private dosyasına nasıl erişebiliriz.
$client = new S3Client([
'version' => 'latest',
'region' => 'nyc3',
'endpoint' => 'https://nyc3.digitaloceanspaces.com',
'use_path_style_endpoint' => false,
'credentials' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
],
]);
$cmd = $client->getCommand('GetObject', [
'Bucket' => env('AWS_BUCKET'),
'Key' => $filePath
]);
$request = $client->createPresignedRequest($cmd, '+5 minutes');
return (string) $request->getUri();
yukardaki kod bloğunu bir fonksiyonda tutarak digitalOcean spaces yüklediğiniz dosya yolunu göndererek dosyaya erişim sağlayabilirsiniz.
0 Yorum
Yorum Bulunmuyor...