mhndev / yii2-media
在 Yii2 中进行媒体操作和存储控制(限制)
0.0.5
2016-10-06 18:03 UTC
Requires
- mhndev/media: 0.0.*
- yiisoft/yii2: *
This package is auto-updated.
Last update: 2024-09-06 09:27:54 UTC
README
Yii2 中的媒体操作实现
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
composer require --prefer-dist mhndev/yii2-media "0.*"
或者在您的 composer.json
文件的 require 部分添加
"mhndev/yii2-media": "0.*"
。
简介
此包帮助您操作任何类型的媒体(图像、视频、文本、PDF 等)以及您喜欢的任何类型的实体。例如,假设您有一个帖子实体,首先您应该在模型中使用 EntityTrait,就像以下这样
namespace app\models; use mhndev\yii2Media\Interfaces\iEntity; use mhndev\yii2Media\Traits\EntityTrait; use yii\db\ActiveRecord; /** * Class Post * @package app\models */ class Post extends ActiveRecord implements iEntity { use EntityTrait; /** * @return string */ public static function tableName() { return 'posts'; } }
此包还帮助您上传媒体并指定任何类型媒体的最高上传大小以及 MIME 类型,您还可以指定如果上传的文件大小小于 x MB,则此包记录内存目录大小。
创建一个名为 media 的配置文件,如下所示
<?php return [ 'mediaClass' => \mhndev\yii2Media\Models\Media::class, 'userClass' => \app\modules\user\models\User::class, 'formats' => [ 'image'=>[ 'avatar'=>[ 'storagePath'=> Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'avatar', 'uploadSizeLimit' => 2, ], 'post-cover' => [ 'storagePath' => Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'post/cover', 'uploadSizeLimit' => 3 ], 'cover' => [ 'storagePath' => Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'cover', 'uploadSizeLimit' => 3 ], 'post-list-view' => [ 'storagePath' => Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'post/list', 'uploadSizeLimit' => 4 ] ], 'audio'=>[ 'music'=>[ 'storagePath'=> Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'music', 'uploadSizeLimit' => 10 ], 'english-learning'=>[ 'storagePath'=> Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'english-learning', 'uploadSizeLimit' => 4 ] ], 'video'=>[ 'storagePath'=> Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'video', 'uploadSizeLimit' => 10 ], 'text'=>[ 'document'=>[ 'storagePath'=> Yii::getAlias('@webroot').DIRECTORY_SEPARATOR.'text', 'uploadSizeLimit' => 1 ] ], ], 'min_storage' => 100 ];
此包附带一个具有以下操作的 Media 控制器。
actionDefaultMedia
此操作接受一个媒体 ID 并将其设置为默认媒体。
/** * @param string $media_id * @return mixed */ public static function markMediaAsDefaultByMediaId($media_id) { $mediaClass = self::mediaClass(); /** @var iMedia $media */ $media = $mediaClass::findOne($media_id); return $media->markAsDefault(); }
actionUploadAndAttachMedia
此操作接受多个文件作为输入,上传并附加到指定的实体。
/** * @return array|string */ public function actionUploadAndAttachMedia() { $data = Yii::$app->request->post(); $model = $data['entity']::findOne($data['entity_id']); return ['records'=>Media::storeAndAttach('media', $data['type'], $model)]; }
这是操作代码,您可以看到它确切做了什么。