superbalist / flysystem-google-storage
Flysystem adapter for Google Cloud Storage
Installs: 19 177 358
Dependents: 41
Suggesters: 10
Security: 0
Stars: 265
Watchers: 44
Forks: 106
Open Issues: 31
Requires
- php: >=5.5.0
- google/cloud-storage: ~1.0
- league/flysystem: ~1.0
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0
README
A Google Cloud Storage adapter for flysystem - a PHP filesystem abstraction.
Installation
composer require superbalist/flysystem-google-storage
Integrations
Want to get started quickly? Check out some of these integrations:
Usage
use Google\Cloud\Storage\StorageClient; use League\Flysystem\Filesystem; use Superbalist\Flysystem\GoogleStorage\GoogleStorageAdapter; /** * The credentials will be auto-loaded by the Google Cloud Client. * * 1. The client will first look at the GOOGLE_APPLICATION_CREDENTIALS env var. * You can use ```putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');``` to set the location of your credentials file. * * 2. The client will look for the credentials file at the following paths: * - 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. */ $storageClient = new StorageClient([ 'projectId' => 'your-project-id', ]); $bucket = $storageClient->bucket('your-bucket-name'); $adapter = new GoogleStorageAdapter($storageClient, $bucket); $filesystem = new Filesystem($adapter); /** * The credentials are manually specified by passing in a keyFilePath. */ $storageClient = new StorageClient([ 'projectId' => 'your-project-id', 'keyFilePath' => '/path/to/service-account.json', ]); $bucket = $storageClient->bucket('your-bucket-name'); $adapter = new GoogleStorageAdapter($storageClient, $bucket); $filesystem = new Filesystem($adapter); // write a file $filesystem->write('path/to/file.txt', 'contents'); // update a file $filesystem->update('path/to/file.txt', 'new contents'); // read a file $contents = $filesystem->read('path/to/file.txt'); // check if a file exists $exists = $filesystem->has('path/to/file.txt'); // delete a file $filesystem->delete('path/to/file.txt'); // rename a file $filesystem->rename('filename.txt', 'newname.txt'); // copy a file $filesystem->copy('filename.txt', 'duplicate.txt'); // delete a directory $filesystem->deleteDir('path/to/directory'); // see http://flysystem.thephpleague.com/api/ for full list of available functionality
Google Storage specifics
When using a custom storage uri the bucket name will not prepended to the file path.
$storageClient = new StorageClient([ 'projectId' => 'your-project-id', ]); $bucket = $storageClient->bucket('your-bucket-name'); $adapter = new GoogleStorageAdapter($storageClient, $bucket); // uri defaults to "https://storage.googleapis.com" $filesystem = new Filesystem($adapter); $filesystem->getUrl('path/to/file.txt'); // "https://storage.googleapis.com/your-bucket-name/path/to/file.txt" // set custom storage uri $adapter->setStorageApiUri('http://example.com'); $filesystem = new Filesystem($adapter); $filesystem->getUrl('path/to/file.txt'); // "http://example.com/path/to/file.txt" // You can also prefix the file path if needed. $adapter->setStorageApiUri('http://example.com'); $adapter->setPathPrefix('extra-folder/another-folder/'); $filesystem = new Filesystem($adapter); $filesystem->getUrl('path/to/file.txt'); // "http://example.com/extra-folder/another-folder/path/to/file.txt"