Skip to content

Instantly share code, notes, and snippets.

@m2sh
Last active January 17, 2024 05:03
Show Gist options
  • Save m2sh/5b5578d5d0d20377bcb72a9f10b45322 to your computer and use it in GitHub Desktop.
Save m2sh/5b5578d5d0d20377bcb72a9f10b45322 to your computer and use it in GitHub Desktop.
How To Use Digitalocean Spaces as Laravel Cloud filesystems

How To Use Digitalocean Spaces as Laravel Cloud filesystems

Steps:

  • Copy DOSpacesStorageServiceProvider.php to Providers directory (app/Providers)
  • Add App\Providers\DOSpacesStorageServiceProvider::class to config/app.php
  • Add this array block to filesystems.php config in disks section (config/filesystems.php) :
    'do-spaces' => [
            'driver' => 'do-spaces',
            'key' => env('SPACES_KEY'),
            'secret' => env('SPACES_SECRET'),
            'region' => env('SPACES_REGION'), // can be anything
            'bucket' => env('SPACES_BUCKET'),// your space name
            'endpoint' => env('SPACES_ENDPOINT') // spaces endpoint (currently : `https://nyc3.digitaloceanspaces.com`)
    ]
  • Done!

Now you can use do-spaces as cloud storage in laravel

<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use Aws\S3\S3Client;
use League\Flysystem\AwsS3v3\AwsS3Adapter;
use League\Flysystem\Filesystem;
use Storage;
class DOSpacesStorageServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
Storage::extend('do-spaces', function ($app, $config) {
$client = new S3Client([
'credentials' => [
'key' => $config["key"],
'secret' => $config["secret"]
],
'region' => $config["region"],
'version' => "latest",
'bucket_endpoint' => false,
'use_path_style_endpoint' => false,
'endpoint' => $config["endpoint"],
]);
return new Filesystem(new AwsS3Adapter($client, $config["bucket"]));
});
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment