it-devgroup/laravel-google-cloud-storage
| Install | |
|---|---|
composer require it-devgroup/laravel-google-cloud-storage |
|
| Latest Version: | 2.2.3 |
| PHP: | >=5.5.9 |
| Laravel: | 5 – 8 |
| License: | MIT |
| Last Updated: | Feb 19, 2021 |
| Links: | GitHub · Packagist |
laravel-google-cloud-storage
A Google Cloud Storage filesystem for Laravel.
Installation
composer require it-devgroup/laravel-google-cloud-storage
If you are on Laravel 5.4 or earlier, then register the service provider in app.php
'providers' => [
// ...
ItDevgroup\LaravelGoogleCloudStorage\GoogleCloudStorageServiceProvider::class,
]
If you are on Laravel 5.5 or higher, composer will have registered the provider automatically for you.
Add a new disk to your filesystems.php config
'gcs' => [
'driver' => 'gcs',
'project_id' => env('GOOGLE_CLOUD_PROJECT_ID', 'your-project-id'),
'key_file' => env('GOOGLE_CLOUD_KEY_FILE', null), // optional: /path/to/service-account.json
'bucket' => env('GOOGLE_CLOUD_STORAGE_BUCKET', 'your-bucket'),
'path_prefix' => env('GOOGLE_CLOUD_STORAGE_PATH_PREFIX', null), // optional: /default/path/to/apply/in/bucket
'storage_api_uri' => env('GOOGLE_CLOUD_STORAGE_API_URI', null), // see: Public URLs below
'visibility' => 'public', // optional: public|private
],
Authentication
The Google Client uses a few methods to determine how it should authenticate with the Google API.
-
If you specify a path in the key
key_filein disk config, that json credentials file will be used. -
If the
GOOGLE_APPLICATION_CREDENTIALSenv var is set, it will use that.putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json'); -
It will then try load the key file from a 'well known path':
- windows: %APPDATA%/gcloud/application_default_credentials.json
- others: $HOME/.config/gcloud/application_default_credentials.json
-
If running in Google App Engine, the built-in service account associated with the application will be used.
-
If running in Google Compute Engine, the built-in service account associated with the virtual machine instance will be used.
-
If you want to authenticate directly without using a json file, you can specify an array for
key_filein disk config with this data:'key_file' => [ 'type' => env('GOOGLE_CLOUD_ACCOUNT_TYPE'), 'private_key_id' => env('GOOGLE_CLOUD_PRIVATE_KEY_ID'), 'private_key' => env('GOOGLE_CLOUD_PRIVATE_KEY'), 'client_email' => env('GOOGLE_CLOUD_CLIENT_EMAIL'), 'client_id' => env('GOOGLE_CLOUD_CLIENT_ID'), 'auth_uri' => env('GOOGLE_CLOUD_AUTH_URI'), 'token_uri' => env('GOOGLE_CLOUD_TOKEN_URI'), 'auth_provider_x509_cert_url' => env('GOOGLE_CLOUD_AUTH_PROVIDER_CERT_URL'), 'client_x509_cert_url' => env('GOOGLE_CLOUD_CLIENT_CERT_URL'), ],
Public URLs
The adapter implements a getUrl($path) method which returns a public url to a file.
Note: Method available for Laravel 5.2 and higher. If used on 5.1, it will throw an exception.
$disk = Storage::disk('gcs');
$url = $disk->url('folder/my_file.txt');
>>> http://storage.googleapis.com/bucket-name/folder/my_file.txt
If you configure a path_prefix in your config:
$disk = Storage::disk('gcs');
$url = $disk->url('folder/my_file.txt');
>>> http://storage.googleapis.com/bucket-name/path-prefix/folder/my_file.txt
If you configure a custom storage_api_uri in your config:
$disk = Storage::disk('gcs');
$url = $disk->url('folder/my_file.txt');
>>> http://your-custom-domain.com/bucket-name/path-prefix/folder/my_file.txt
For a custom domain (storage api uri), you will need to configure a CNAME DNS entry pointing to storage.googleapis.com.
Please see https://cloud.google.com/storage/docs/xml-api/reference-uris#cname for further instructions.
Usage
$disk = Storage::disk('gcs');
// create a file
$disk->put('avatars/1', $fileContents);
// check if a file exists
$exists = $disk->exists('file.jpg');
// get file modification date
$time = $disk->lastModified('file1.jpg');
// copy a file
$disk->copy('old/file1.jpg', 'new/file1.jpg');
// move a file
$disk->move('old/file1.jpg', 'new/file1.jpg');
// get url to file
$url = $disk->url('folder/my_file.txt');
// Set the visibility of file to public
$disk->setVisibility('folder/my_file.txt', 'public');
// See https://laravel.com/docs/5.3/filesystem for full list of available functionality
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| 2.2.3 | >=5.5.9 | ^5.1| | MIT | |
| 2.2.2 | >=5.5.9 | ^5.1| | MIT | |
| 2.2.1 | >=5.5.9 | ^5.1| | MIT | |
| 2.2.0 | >=5.5.9 | ^5.1| | MIT | |
| 2.1.2 | >=5.5.9 | ^5.1| | MIT | |
| 2.1.1 | >=5.5.9 | ^5.1| | MIT | |
| 2.1.0 | >=5.5.9 | ^5.1| | MIT | |
| 2.0.0 | >=5.5.9 | ^5.1| | MIT | |
| 1.0.5 | >=5.5.9 | ^5.1| | MIT | |
| 1.0.4 | >=5.5.9 | ^5.1| | MIT | |
| 1.0.3 | >=5.5.9 | ^5.1| | MIT | |
| 1.0.2 | >=5.5.9 | ^5.2| | MIT | |
| 1.0.1 | >=5.5.9 | ^5.2| | MIT | |
| 1.0.0 | >=5.6.4 | ^5.3 | MIT |