https://github.com/websightgmbh/l5-google-cloud-storage
Laravel 5 Flysystem Adapter for Google Cloud Storage
https://github.com/websightgmbh/l5-google-cloud-storage
flysystem flysystem-adapter google-cloud-storage
Last synced: about 23 hours ago
JSON representation
Laravel 5 Flysystem Adapter for Google Cloud Storage
- Host: GitHub
- URL: https://github.com/websightgmbh/l5-google-cloud-storage
- Owner: websightgmbh
- License: mit
- Created: 2015-11-27T12:53:51.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-03-23T08:15:01.000Z (about 7 years ago)
- Last Synced: 2025-05-27T15:15:47.269Z (21 days ago)
- Topics: flysystem, flysystem-adapter, google-cloud-storage
- Language: PHP
- Size: 25.4 KB
- Stars: 36
- Watchers: 3
- Forks: 17
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Google Cloud Storage ServiceProvider for Laravel 5 Apps
[](https://packagist.org/packages/websight/l5-google-cloud-storage) [](https://packagist.org/packages/websight/l5-google-cloud-storage) [](https://packagist.org/packages/websight/l5-google-cloud-storage) [](https://packagist.org/packages/websight/l5-google-cloud-storage)
Wraps [cedricziel/flysystem-gcs](https://github.com/cedricziel/flysystem-gcs) in a Laravel 5.x
compatible Service Provider.**Note:**
This project doesn't support the deprecated `p12` credentials format anymore.
If you rely on it, please use the `1.x` versions.## Configuration
*Dedicated credentials:* Obtain json service account credentials of a dedicated CloudPlatform Service Account
**or**
*Local authentication through gcloud:* Log in locally on your machine through the `gcloud` command-line
utility.* Add the service provider to your application in ``config/app.php``
```php
Websight\GcsProvider\CloudStorageServiceProvider::class,
```
* Add a disk to the `disks` array in config/filesystems.php
```php
'gcs' => [
// Select the Google Cloud Storage Disk
'driver' => 'gcs',
// OPTIONAL: The location of the json service account certificate, see below
// 'credentials' => storage_path('my-service-account-credentials.json'),
// OPTIONAL: The GCP project id, see below
// 'project_id' => 'my-project-id-4711',
// The bucket you want this disk to point at
'bucket' => 'my-project-id-4711.appspot.com',
],
```
* If Google Cloud Storage is the only `cloud` disk, you may consider
setting it as the `cloud` disk, so that you can access it like
`Storage::cloud()->$operation()` via `'cloud' => 'gcs',` in the `filesystems.php`
config file.
## Authentication and the different configuration optionsGoogle Cloud Platform uses json credential files. For the use-case of this library,
there are two different types that can easily confuse you.1. credentials type `user`
This is the type of credentials that identifies you as a user entity,
most likely when authenticated through the `gcloud` utility.
Since this type of credentials identifies users and users can belong
to more than one project, you need to specify the `project_id` config option.
The keys should automatically be detected through their well-known location.
2. credentials type `service_account`
Service Account credentials are for authorizing machines and / or individual
services to Google Cloud Platform. AppEngine instances and GCE machines
already have a service account pre-installed so you don't need to configure
neither `project_id` not `credentials`, since service accounts carry the information
to which project they belong.### When do I need to configure which option?
| Location | `project_id` | `credentials` | `bucket` |
|-----------------------------------------|--------------------------|--------------------------|-----------------|
| AppEngine (Standard & Flex) | *detected automatically* | *detected automatically* | needs to be set |
| Deployment to non-GCP machine | needs to be set | needs to be set | needs to be set |
| Local development with user credentials | needs to be set | *detected automatically* | needs to be set |
| Local development with service account | *detected automatically* | needs to be set | needs to be set |## Usage
Use it like any other Flysystem Adapter with the ``Storage``-Facade.
```php
$disk = Storage::disk('gcs');// Put a private file on the 'gcs' disk which is a Google Cloud Storage bucket
$disk->put('test.png', file_get_contents(storage_path('app/test.png')));// Put a public-accessible file on the 'gcs' disk which is a Google Cloud Storage bucket
$disk->put(
'test-public.png',
file_get_contents(storage_path('app/test-public.png')),
\Illuminate\Contracts\Filesystem\Filesystem::VISIBILITY_PUBLIC
);// Retrieve a file
$file = $disk->get('test.png');
```## License
MIT