ozerich/yii2-filestorage-db
Composer 安装命令:
composer require ozerich/yii2-filestorage-db
包简介
Extension for file uploading and attaching to the models
README 文档
README
The preferred way to install this extension is through composer.
Either run
php composer.phar require ozerich/yii2-filestorage-db "*"
or add
"ozerich/yii2-filestorage-db": "*"
to the require section of your composer.json file.
Add component configuration to your config.php
'components' => [ 'media' => [ 'class' => 'ozerich\filestorage\FileStorage', 'scenarios' => [ 'avatar' => [ 'storage' => [ 'type' => 'file', 'saveOriginalFilename' => false, 'uploadDirPath' => __DIR__ . '/../../web/uploads/avatars', 'uploadDirUrl' => '/uploads/avatars', ], 'validator' => [ 'maxSize' => 2 * 1024 * 1024, // 2 MB 'checkExtensionByMimeType' => true, 'extensions' => ['jpg', 'jpeg', 'bmp', 'gif', 'png'] ], 'thumbnails' => [ [ 'width' => 500 ], [ 'height' => 500 ], [ 'alias' => 'preview', 'width' => 250, 'сrop' => true, '2x' => true, 'force' => true, 'webp' => true ], [ 'width' => 200, 'height' => 200, 'exact' => true ], ], 'quality' => 75 ], 'document' => [ 'storage' => [ 'type' => 'file', 'uploadDirPath' => __DIR__ . '/../../web/uploads/documents', 'uploadDirUrl' => '/uploads/documents', ], 'validator' => [ 'maxSize' => 20 * 1024 * 1024, // 20 MB 'checkExtensionByMimeType' => true, 'extensions' => ['pdf', 'doc'], ], ] ] ] ]
Add media component to bootstrap
'config' => [ 'bootstrap' => [..., 'media'], ]
Add migrations path to your console config (console.php)
'config' => [ 'controllerMap' => [ 'migrate' => [ 'class' => 'yii\console\controllers\MigrateController', 'migrationNamespaces' => [ 'ozerich\filestorage\migrations', ], ], ], ]
Apply migrations
php yii migrate/up
Usage
Example usage (get file from HTTP request):
/* app\controllers\UploadController.php */ public function actionImage() { Yii::$app->response->format = 'json'; $file = UploadedFile::getInstanceByName('file'); $model = Yii::$app->media->createFileByUploadedFile($file, 'avatar'); return [ 'image' => $model->toJSON() ]; }
Output will be:
{
"id": 1,
"url": "http://localhost/uploads/images/W7/LK/W7LK3u5LJ7LGtc0nlGOqinl_AVZlinQH.jpg",
"name": "test-file.jpg",
"ext": "jpg",
"mime": "image/jpeg",
"size": 64749,
"thumbnails": [
{
"id": "1_ORIGINAL",
"thumb": "ORIGINAL",
"width": 450,
"height": 800,
"url": "http://localhost/uploads/images/W7/LK/W7LK3u5LJ7LGtc0nlGOqinl_AVZlinQH.jpg",
"url@2x": null
},
{
"id": "1_500xAUTO",
"thumb": "500xAUTO",
"width": 500,
"height": 200,
"url": "http://localhost/uploads/images/W7/LK/W7LK3u5LJ7LGtc0nlGOqinl_AVZlinQH_500_AUTO.jpg",
"url@2x": null
},
{
"id": "1_AUTOx500",
"thumb": "AUTOx500",
"width": 260,
"height": 500,
"url": "http://localhost/uploads/images/W7/LK/W7LK3u5LJ7LGtc0nlGOqinl_AVZlinQH_AUTO_500.jpg",
"url@2x": null
},
{
"id": "1_200x200",
"thumb": "200x200",
"width": 200,
"height": 200,
"url": "http://localhost/uploads/images/W7/LK/W7LK3u5LJ7LGtc0nlGOqinl_AVZlinQH_200_200.jpg",
"url@2x": "http://localhost/uploads/images/W7/LK/W7LK3u5LJ7LGtc0nlGOqinl_AVZlinQH_200_200@2x.jpg"
}
]
}
Example usage (load file from url):
/* app\models\User.php */ public function setUserAvatarFromUrl($image_url) { $image = $media->createFileFromUrl($image_url, 'avatar'); $this->avatar_image_id = $image->id; }
Example usage (load file from base64string):
/* app\controllers\UploadController.php */ public function actionImage() { Yii::$app->response->format = 'json'; $base64string = Yii::$app->request->post('data'); $filename = Yii::$app->request->post('filename'); $model = Yii::$app->media->createFileFromBase64($base64string, $filename, 'avatar'); return [ 'image' => $model->toJSON() ]; }
Console commands
To use console commands you should create a file FilestorageController.php at your commands folders.
<?php
namespace app\commands;
class FilestorageController extends \ozerich\filestorage\console\FilestorageController
{
// className of your File model
public $modelClass = 'app\models\Image';
}
If you did not use console commands at your projects, don't forget to confugure them, you should insert code in your config/console.php
'controllerNamespace' => 'app\commands',
List of commands:
- php yii filestorage/fix-thumbnails - Regenerate thumbnails of all images
ozerich/yii2-filestorage-db 适用场景与选型建议
ozerich/yii2-filestorage-db 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.13k 次下载、GitHub Stars 达 7, 最近一次更新时间为 2018 年 03 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「file」 「storage」 「db」 「upload」 「extension」 「attachment」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ozerich/yii2-filestorage-db 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ozerich/yii2-filestorage-db 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ozerich/yii2-filestorage-db 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A SDK for working with B2 cloud storage.
Small library to access Microsoft Windows Azure Blob Storage with a Service or a StreamWrapper.
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
Laravel Media Popup to upload/view the files
PMVC Plugin for File information
Mapper for accessing resources in KWCMS
统计信息
- 总下载量: 2.13k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 18
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2018-03-25