insolita / yii2-multifs
基于 (League\Flysystem\MountManager) 的多文件系统管理器,用于处理一组文件系统。
1.0.0
2017-11-03 19:05 UTC
Requires
- php: >=5.6
- league/flysystem: ^1.0
- yiisoft/yii2: ~2.0.13
Requires (Dev)
- codeception/codeception: ^2.2.3
- codeception/specify: ~0.4.3
- codeception/verify: ~0.3.1
- nesbot/carbon: 1.*
- vlucas/phpdotenv: *
This package is auto-updated.
Last update: 2024-08-29 04:37:08 UTC
README
- 提供基于 (League\Flysystem\MountManager) 的多文件系统管理器,用于处理文件系统(League\Flysystem\Filesystem);
- 提供灵活的上传服务,支持不同的文件命名、文件路径结构和文件保存策略
- 提供示例上传、查看和删除操作,输出与 trntv\filekit\widget\Upload 兼容
安装
首选安装此扩展的方式是通过 composer。
运行以下命令:
composer require --prefer-dist insolita/yii2-multifs "~1.0.0"
或者在您的 composer.json
文件的 require 部分添加:
"insolita/yii2-multifs": "~0.0.1"
使用
安装扩展后,只需在代码中通过以下方式使用它:
在 bootstrap 中定义必要的文件系统
$avatars = (new \insolita\multifs\builders\LocalFsBuilder('@app/web/uploads/avatars'))->build(); $covers = (new \insolita\multifs\builders\LocalFsBuilder('@app/web/uploads/covers'))->build(); $attach = (new \insolita\multifs\builders\LocalFsBuilder('@app/web/uploads/attach'))->build(); $data = (new \insolita\multifs\builders\LocalFsBuilder('@data'))->build();
(确保已定义别名)
在容器中注册
\insolita\multifs\contracts\IMultifsManager::class => [ \insolita\multifs\MultiFsManager::class, [ [ 'avatars' => $avatars, 'covers' => $covers, 'attach' => $attach, 'internal' => $data, ], ], ], \insolita\multifs\contracts\IUploader::class=>[ \insolita\multifs\Uploader::class, [ \yii\di\Instance::of(\insolita\multifs\contracts\IMultifsManager::class), 'attach' ] ],
您还可以添加组件别名
'components'=>[ 'multifs'=>\insolita\multifs\contracts\IMultifsManager::class, 'uploader'=>\insolita\multifs\contracts\IUploader::class, ]
即时使用
echo Yii::$app->multifs->listPrefixes(); Yii::$app->multifs->mountFilesystem('special', new Filesystem(new Adapter(...))); Yii::$app->multifs->write('special://some/file/path/name.txt','Hello Test'); $fs = Yii::$app->multifs->getFilesystem('internal'); Vardumper::dump($fs->listConents('',true));
上传器
$file = \yii\web\UploadedFile::getInstanceByName('file'); $path = Yii::$app->uploader->setFsPrefix('avatars') ->setFileNameStrategy(new insolita\multifs\strategy\filename\AsIsStrategy()) ->setFilePathStrategy(new insolita\multifs\strategy\filename\NameHashStrategy()) ->setFileSaveStrategy(new insolita\multifs\strategy\filename\ExceptionSaveExistsStrategy()) ->save($file); \Yii::$app->response->sendStreamAsFile(Yii::$app->multifs->readStream($path), pathinfo($path, PATHINFO_BASENAME), [ 'mimeType' => $file->getType(), 'inline'=>true ]);
其他文档将在以后发布;请参阅测试