A Google Cloud Storage filesystem for Laravel.
This is using flysystem-aws-s3-v3. Because Google Cloud Storage uses the same api as Amazon S3, so actually I just use the same driver but I renamed to gcs.
composer require halalsoft/laravel-google-cloud-storage
Add a new disk to your filesystems.php
config
'gcs' => [
'driver' => 'gcs',
'key' => env('GCP_ACCESS_KEY_ID'),
'secret' => env('GCP_SECRET_ACCESS_KEY'),
'bucket' => env('GCP_BUCKET'),
],
Above is the config that required, here is other possible configs:
'gcs' => [
'driver' => 'gcs',
'key' => env('GCP_ACCESS_KEY_ID'),
'secret' => env('GCP_SECRET_ACCESS_KEY'),
'bucket' => env('GCP_BUCKET'),
'visibility' => 'public', //Default visibility, you can set public or private
'url' => "https://custom.domain.com", //Your public URL (if you use custom domain or CDN)
'endpoint' => "https://storage.googleapis.com", //Your endpoint URL (if you use custom driver)
'cache' => [
'store' => 'memcached',
'expire' => 600,
'prefix' => 'cache-prefix',
],
],
You can use most of Laravel Filesystem API
Examples:
$disk = Storage::disk('gcs');
// create a file
$disk->put('avatars/1', $request->file("image"));
// check if a file exists
$exists = $disk->exists('image.jpg');
// get file last modification date
$time = $disk->lastModified('image1.jpg');
// copy a file
$disk->copy('old/image1.jpg', 'new/image1.jpg');
// move a file
$disk->move('old/image1.jpg', 'new/image1.jpg');
// get url to file
$url = $disk->url('avatar/yaskur.jpg');