halalsoft/laravel-google-cloud-storage

A Google Cloud Storage flysystem for Laravel

v0.2.2 2020-10-06 13:37 UTC

This package is auto-updated.

Last update: 2024-11-15 03:14:47 UTC


README

A Google Cloud Storage filesystem for Laravel.

StyleCI Scrutinizer Code Quality Codacy Badge Code Intelligence Status Build Status GitHub repo size Software License GitHub top language Packagist Version Total Downloads

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.

Installation

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',
          ],
],

Usage

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');