mhndev/yii2-media

在 Yii2 中进行媒体操作和存储控制(限制)

0.0.5 2016-10-06 18:03 UTC

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)];
    }

这是操作代码,您可以看到它确切做了什么。