S3 support module (file-manager and stuff).
Add
{
"type": "vcs",
"url": "https://github.com/cusodede/yii2-s3-module"
}
to repositories section of your composer.json
file, then run
php composer.phar require cusodede/yii2-s3-module "^1.0.0"
or add
"cusodede/yii2-s3-module": "^1.0.0"
to the require section of your composer.json
file.
Module needs to store file data in database tables, which will be created by
php yii migrate/up --migrationPath=@vendor/cusodede/yii2-s3-module/migrations
command. You can customize table names by define tableName
and tagsTableName
parameters in module configuration.
See example config below:
return [
// ...
'modules' => [
's3' => [
'class' => cusodede\s3\S3Module::class,
'defaultRoute' => 'index',
'params' => [
'connection' => [
'host' => 'minio_host',
'login' => 'minio_user',
'password' => 'minio_password',
'connect_timeout' => 10, /* http connection timeout */
'timeout' => 10, /* http timeout */
'cert_path' => null, /* path to ssl certificate, set null to disable */
'cert_password' => null /* certificate password, set null, if certificate has no password */
],
'tableName' => 'sys_cloud_storage', /* table with storage data info, see Module migration section */
'tagsTableName' => 'sys_cloud_storage_tags', /*table with local tags, see Module migration section */
'viewPath' => '@vendor/cusodede/yii2-s3-module/src/views/index', /* path to view templates, if you want to customize them */
'maxUploadFileSize' => null, /* file size limit for uploaded file, set null to disable */
'defaultBucket' => 'bucket', /* name of bucket, used by default, if null, alphabetically first bucket will be used */
'mimeTypes' => [
'apk' => 'application/vnd.android.package-archive',
],/* mime types list (ext => mime), used for downloaded files mime substitution. Note: that list overrides a magic.mime file information. */
'defaultMimeType' => 'application/octet-stream', /* mime type, that be used for any file, which extension has not included in mimeTypes parameter or in magic.mime */
'deleteTempFiles' => true /* delete php temp files after upload */
]
]
]
// ...
]
At first, configure MultipartFormDataParser as request parser for multipart/form-data:
return [
'components' => [
'request' => [
'parsers' => [
'multipart/form-data' => yii\web\MultipartFormDataParser::class
],
],
// ...
],
// ...
];
that's all. Now it is possible to do stream uploads via PUT
method. You can use a any proper JS-based
widget (like limion/yii2-jquery-fileupload-widget
) to do this. See also views/index/put.php for example.
It is possible to mark uploads with tags, what may be used for quick search. Tags will be stored in local table and also will be assigned to S3 object. But it works only to one side: tags from S3 objects will not be synchronized to local table. It is possible to sync local and remote tags, see CloudStorage::syncTagsFromS3()
and CloudStorage::syncTagsToS3()
methods.
Copy tests/.env.example
to tests/.env
, and set configuration corresponding to your local environment. Then run php vendor/bin/codecept run
command.