pozitronik / yii2-filestorage
YII2 的文件存储模块
1.0.2.2
2022-09-15 11:02 UTC
Requires
- php: >=8.0
- pozitronik/yii2-badgewidget: ^2.0.0
- pozitronik/yii2-traits: ^1.0.5
Requires (Dev)
- kartik-v/yii2-widget-select2: dev-master
- yiisoft/yii2: dev-master
- yiisoft/yii2-bootstrap4: 2.0.10
Suggests
- yiisoft/yii2-bootstrap: for yii2-filestorage extensions to work with Bootstrap 3.x version
- yiisoft/yii2-bootstrap4: for yii2-filestorage to work with Bootstrap 4.x version
README
YII2 的文件存储模块
安装
安装此扩展的首选方式是通过 composer。
运行
php composer.phar require pozitronik/yii2-filestorage "dev-master"
或添加
"pozitronik/yii2-filestorage": "dev-master"
到您的 composer.json
文件的 require 部分中。
要求
Yii2, PHP >= 7.4.0
使用方法
模块的配置应该在 web.php 和 console.php 中设置(以确保正确执行迁移)
'filestorage' => [ 'class' => FSModule::class, 'defaultRoute' => 'index', 'params' => [ 'tableName' => 'sys_file_storage',//используемая таблица хранения метаданных 'tableNameTags' => 'sys_file_storage_tags',//используемая таблица хранения тегов 'base_dir' => '@app/web/uploads/',//каталог хранения файлов 'models_subdirs' => true,//файлы каждой модели кладутся в подкаталог с именем модели 'name_subdirs_length' => 2//если больше 0, то файлы загружаются в подкаталоги по именам файлов (параметр регулирует длину имени подкаталогов) ] ]
配置后执行迁移
yii migrate --migrationPath=@vendor/pozitronik/yii2-filestorage/migrations
逻辑:将 FileStorageTrait 添加到任何 Model::class 的子类中。它会给类添加属性UploadedFile $uploadFileInstance,以及以下方法和
uploadFile(array $tags = [], string $instanceName = 'uploadFileInstance'):array //добавление файла с заданным набором тегов.
和
files(?array $tags = null):array //получение списка загрузок по заданному набору тегов.
多文件上传尚未实现。
通过 uploadFile 上传时,上传将绑定到模型。对于 ActiveRecord,绑定直接到类实例,对于普通模型,绑定到整个类。标签是添加到上传的任意标签,一个上传可以添加任意数量的标签。一个模型可以添加任意数量的带有相同标签的上传。通过这种方式实现了版本控制:最后一个上传被视为最新版本,其他被视为旧版本,可以单独访问)。
files() 方法将返回模型的所有上传列表(可选 -- 只按指定的标签)。每个上传都可用
- 方法 download() -- 发送与上传绑定的文件的下载
- 属性 $versions -- 返回这个上传的版本列表(其中 0 是最新版本)。
示例在 @vendor/src/controllers/IndexController.php,其中展示了所有功能。
对于直接上传,指定属性 fileUploadInstance 并执行 save()