Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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