2amigos / yii2-flysystem-component
The League Flysystem integration for Yii Framework
Installs: 40 455
Dependents: 0
Suggesters: 0
Security: 0
Stars: 22
Watchers: 7
Forks: 8
Open Issues: 5
Type:yii2-extension
Requires
- league/flysystem: ^1.0
- yiisoft/yii2: *
Requires (Dev)
- cedricziel/flysystem-gcs: ^1.1
- friendsofphp/php-cs-fixer: ^2.0
- league/flysystem-aws-s3-v3: ^1.0
- league/flysystem-azure: ^1.0
- league/flysystem-cached-adapter: ^1.0
- league/flysystem-gridfs: ^1.0
- league/flysystem-memory: ^1.0
- league/flysystem-rackspace: ^1.0
- league/flysystem-replicate-adapter: ^1.0
- league/flysystem-sftp: ^1.0
- league/flysystem-webdav: ^1.0
- league/flysystem-ziparchive: ^1.0
- phpmd/phpmd: @stable
- phpunit/phpunit: ^5.0
- spatie/flysystem-dropbox: ^1.0
- squizlabs/php_codesniffer: *
This package is auto-updated.
Last update: 2023-08-16 03:11:14 UTC
README
Flysystem is a file system abstraction which allows you to easily swap out a local filesystem for a remote one.
This component library provides components that expose the Flysystem API to your Yii 2 applications. The following are the currently supported ones:
- AwsS3FsComponent: Interacts with Amazon S3 buckets.
- AzureFsComponent: Interacts with Microsoft Azure.
- DropboxFsComponent: Interacts with Dropbox.
- FtpFsComponent: Interacts with an FTP server.
- GoogleCloudFsComponent: Interacts with Google Cloud Storage.
- GridFSFsComponent: Interacts with GridFS.
- LocalFsComponent: Interacts with your local server storage.
- MemoryFsComponent: Interacts with memory. Useful when you don't want anything persisted.
- NullFsComponent: Used for testing.
- RackspaceFsComponent: Interacts with Rackspace.
- SftpFsComponent: Interacts with an Sftp server.
- WebDAVFsComponent: Interacts with WebDAV.
- ZipArchiveFsComponent: Interacts with zip archives.
Install
The preferred way to install this extension is through composer.
Either run
$ composer require 2amigos/yii2-flysystem-component
or add
"2amigos/yii2-flysystem-component": "^1.0"
to the require
section of your composer.json
file.
Usage
AwsS3FsComponent
Install dependency
$ composer require league/flysystem-aws-s3-v3
Configure on the application components
section:
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\AwsS3FsComponent', 'key' => 'your-key', 'secret' => 'your-secret', 'bucket' => 'your-bucket', 'region' => 'your-region', // 'version' => 'latest', // 'baseUrl' => 'your-base-url', // 'prefix' => 'your-prefix', // 'options' => [], ], ], ];
When you application run, you will be able to use the component as:
Yii::$app->fs->read(....);
Check http://flysystem.thephpleague.com/api/ for all the methods available. Same methods for all adapters.
AzureFsComponent
First ensure the pear repository is added to your composer.json
file:
"repositories": [
{
"type": "pear",
"url": "http://pear.php.net"
}
],
Then install the latest version of the plugin
$ composer require league/flysystem-azure
Configure on the application components
section:
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\AzureFsComponent', 'accountName' => 'your-account-name', 'accountKey' => 'your-account-key', 'container' => 'your-container', ], ], ];
DropboxFsComponent
Install dependency
$ composer require spatie/flysystem-dropbox
Configure on the application components
section:
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\DropboxFsComponent', 'token' => 'your-access-token', // 'prefix' => 'your-prefix', ], ], ];
FtpFsComponent
Configure application components
as follows
return [ //... 'components' => [ //... 'ftpFs' => [ 'class' => 'dosamigos\flysystem\FtpFsComponent', 'host' => 'ftp.example.com', // 'port' => 21, // 'username' => 'your-username', // 'password' => 'your-password', // 'ssl' => true, // 'timeout' => 60, // 'root' => '/path/to/root', // 'permPrivate' => 0700, // 'permPublic' => 0744, // 'passive' => false, // 'transferMode' => FTP_TEXT, ], ], ];
GoogleCloudFsComponent
Install dependency
$ composer require cedricziel/flysystem-gcs
Configure on the application components
section:
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\GoogleCloudFsComponent', 'projectId' => 'your-project-id', 'bucket' => 'your-bucket', // 'prefix' => 'your-prefix', ], ], ];
GridFSFsComponent
Install dependency
$ composer require league/flysystem-gridfs
Configure on the application components
section:
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\GridFSFsComponent', 'server' => 'mongodb://localhost:27017', 'database' => 'your-database', ], ], ];
LocalFsComponent
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\LocalFsComponent', 'path' => '@webroot/your-writable-folder-to-save-files', ], ], ];
MemoryFsComponent
Install dependency
$ composer require league/flysystem-memory
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\MemoryFsComponent', ], ], ];
NullFsComponent
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\NullFsComponent', ], ], ];
RackspaceFsComponent
Install dependency
$ composer require league/flysystem-rackspace
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\RackspaceFsComponent', 'endpoint' => 'your-endpoint', 'region' => 'your-region', 'username' => 'your-username', 'apiKey' => 'your-api-key', 'container' => 'your-container', // 'prefix' => 'your-prefix', ], ], ];
SftpFsComponent
Install dependency
$ composer require league/flysystem-sftp
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\SftpFsComponent', 'host' => 'sftp.example.com', 'username' => 'your-username', 'password' => 'your-password', 'privateKey' => '/path/to/or/contents/of/privatekey', // 'port' => 22, // 'timeout' => 60, // 'root' => '/path/to/root', // 'permPrivate' => 0700, // 'permPublic' => 0744, ], ], ];
WebDAVFsComponent
Install dependency
$ composer require league/flysystem-webdav
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\WebDAVFsComponent', 'baseUri' => 'your-base-uri', // 'userName' => 'your-user-name', // 'password' => 'your-password', // 'proxy' => 'your-proxy', // 'authType' => \Sabre\DAV\Client::AUTH_BASIC, // 'encoding' => \Sabre\DAV\Client::ENCODING_IDENTITY, // 'prefix' => 'your-prefix', ], ], ];
ZipArchiveFsComponent
Install dependency
$ composer require league/flysystem-ziparchive
Configure application components
as follows
return [ //... 'components' => [ //... 'fs' => [ 'class' => 'dosamigos\flysystem\ZipArchiveFsComponent', 'path' => '@webroot/files/archive.zip', // 'prefix' => 'your-prefix', ], ], ];
Cool Stuff
Multiple Instances
You can configure as many components as you need. Simply add them to the components
section with different names. For
example, I could have S3 and FTP at the same time:
return [ //... 'components' => [ //... 's3Fs' => [ 'class' => 'dosamigos\flysystem\AwsS3FsComponent', 'key' => 'your-key', 'secret' => 'your-secret', 'bucket' => 'your-bucket', 'region' => 'your-region', // 'version' => 'latest', // 'baseUrl' => 'your-base-url', // 'prefix' => 'your-prefix', // 'options' => [], ], 'ftpFs => [ 'class' => 'dosamigos\flysystem\FtpFsComponent', 'host' => 'ftp.example.com', ] ], ];
Now, I could use them like Yii::$app->s3Fs
and Yii::$app->ftpFs
respectively.
Caching
If you wish to add caching functionality, first we need to include the dependencies on your composer.json
file:
$ composer require league/flysystem-cached-adapter
Next, configure the following attributes on your adapter:
return [ //... 'components' => [ //... 'fs' => [ //... 'cache' => 'cacheID', // 'cacheKey' => 'my-cache-key', // 'cacheDuration' => 7200, ], ], ];
Replicating
The replication facilitates transitions between adapters, allowing an application to stay functional and migrate its files from one adapter to another. The adapter takes two other adapters, a source and a replica. Every change is delegated to both adapters, while all the read operations are passed onto the source only.
To use the replication feature first install its dependencies:
$ composer require league/flysystem-replicate-adapter
Next, configure as follows:
return [ //... 'components' => [ //... 's3Fs' => [ 'class' => 'dosamigos\flysystem\AwsS3FsComponent', 'key' => 'your-key', 'secret' => 'your-secret', 'bucket' => 'your-bucket', 'region' => 'your-region', ], 'ftpFs => [ 'class' => 'dosamigos\flysystem\FtpFsComponent', 'host' => 'ftp.example.com', 'replica' => 's3Fs' // we have added the ID of the replica component ] ], ];
Further Information
Testing
$ phpunit
Using code fixer
We have added a PHP code fixer to standardize our code. It includes Symfony, PSR2 and some contributors rules.
./vendor/bin/php-cs-fixer fix ./src --config .php_cs
Contributing
Please see CONTRIBUTING for details.
Credits
- crecoder for the original idea of flysystem wrappers
- 2amigos
- All Contributors
License
The BSD License (BSD). Please see License File for more information.
Custom Software | Web & Mobile Software Development
www.2amigos.us