定制 karakum/yii2-path-registry 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

karakum/yii2-path-registry

Composer 安装命令:

composer require karakum/yii2-path-registry

包简介

This extension provides a directory generator for file storage based on the maximum occupancy directory.

README 文档

README

This extension provides a directory generator for file storage based on the maximum occupancy directory.

Each time calling getPath method it search most empty directory. When all directories full filled according with max files count per directory(default 1000 files), extension generate new portion of directories(default 20 dirs). Using directory with each file must be marked by the method countUpPath. When file removed from directory the method countDownPath must be called.

Different filling setting can be using with several namespaces.

Installation

The preferred way to install this extension is through composer.

Either run

php composer.phar require --prefer-dist karakum/yii2-path-registry "*"

or add

"karakum/yii2-path-registry": "*"

to the require section of your composer.json file.

Configure application component

    'components' => [
    ...
        'pathManager' => [
            'class' => 'karakum\PathRegistry\PathManager',
            'defaultMaxFiles' => 1000,
            'defaultNewFolders' => 20,
            'namespaces' => [
                'avatar' => [
                    'path' => '@webroot/uploads/avatar',
                    'url' => '@web/uploads/avatar',      // Direct download link 
                    'maxFiles' => 100,
                    'newFolders' => 5
                ],
                'files' => [
                    'path' => '@app/secure',
                    'url' => ['file/download'],          // Through controller
                ],
            ],
        ],
        'urlManager' => [
            ...
            'rules' => [
                'download/<id:\d+>/<name>' =>'file/download',
                ...
            ],
            ...
        ],
    ...
    ],

Create migration:

$ yii migrate/create path_organizer

and modify like:

<?php

use yii\db\Migration;

require(Yii::getAlias('@karakum/PathRegistry/migrations/m160606_163120_path_organizer_init.php'));

class mXXXXXX_XXXXXX_path_organizer extends Migration
{
    public function up()
    {
        $path = new m160606_163120_path_organizer_init();
        $path->up();
    }

    public function down()
    {
        $path = new m160606_163120_path_organizer_init();
        $path->down();
    }
}

Migration will create table with default name {{%path_organizer}}. To change it use property pathTable of PathManager component.

Usage

Once the extension is installed, simply use it in your code by :

<?=

$avatarPath = Yii::$app->pathManager->getPath('avatar');
$path = $avatarPath->getPath();                          			//  '7b08aea20ff07411b74b97ebe7fe6bf8'
$directory = $avatarPath->getFullPath();                            //  '/var/www/yii2-app/web/uploads/avatar/7b08aea20ff07411b74b97ebe7fe6bf8'
$filename = $avatarPath->getFullPath('photo.png');                  //  '/var/www/yii2-app/web/uploads/avatar/7b08aea20ff07411b74b97ebe7fe6bf8/photo.png'
$file = $avatarPath->getPath('photo.png');                 			//  '7b08aea20ff07411b74b97ebe7fe6bf8/photo.png'
$imgSrc = $avatarPath->getUrl($file, [                              //  'http://mysite.com/uploads/avatar/7b08aea20ff07411b74b97ebe7fe6bf8/photo.png'
    'id' => 1,
    'name' => 'Photo_name.png'
]);

$filesPath = Yii::$app->pathManager->getPath('files');
$path = $filesPath->getPath();                          			//  '06524c83dc331625baeece8a8b4b5022'
$directory = $filesPath->getFullPath();                             //  '/var/www/yii2-app/secure/06524c83dc331625baeece8a8b4b5022'
$filename = $filesPath->getFullPath('secret.txt');      			//  '/var/www/yii2-app/secure/06524c83dc331625baeece8a8b4b5022/secret.txt'
$file = $filesPath->getPath('secret.txt');              			//  '06524c83dc331625baeece8a8b4b5022/secret.txt'
$fileUrl = $filesPath->getUrl($file, [                              //  'http://mysite.com/download/2/Secret_data.txt'
    'id' => 2,
    'name' => 'Secret_data.txt'
]);

?>

统计信息

  • 总下载量: 126
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2016-06-07

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固