欢迎访问宙启技术站
智能推送

Yii2.0七牛扩展配置及图片管理Demo

发布时间:2023-05-17 04:38:23

Yii2.0是目前较为流行的PHP框架之一,拥有强大的功能和灵活的扩展性。而七牛则是一个著名的云存储服务商,为用户提供便捷、高效、安全的云存储服务。本文将介绍如何在Yii2.0中使用七牛扩展进行图片管理,并给出一个简单的Demo。 

一、安装七牛扩展

Yii2.0官方提供了一个丰富的扩展库,其中也包含了适用于七牛的扩展包。我们可以使用composer进行安装。

打开终端,进入工程目录,输入以下命令:

composer require tinywan/yii2-qiniu

安装成功后,在config/web.php中加入如下代码,进行配置:

'qiniu' => [

    'class' => 'tinywan\qiniu\Qiniu',

    'accessKey' => '七牛accessKey',

    'secretKey' => '七牛secretKey',

    'bucket' => '七牛bucket',

    'domain' => '七牛domain',

],

其中,accessKey和secretKey是七牛提供的API密钥,在七牛开发者中心获取;bucket是存储空间的名称,需要在七牛上创建;domain是七牛空间绑定的域名。

二、图片管理

在上述配置完成后,就可以使用七牛扩展提供的方法进行图片管理了。

1.上传图片

public function upload()

{

    $model = new UploadForm();

    if (Yii::$app->request->isPost) {

        $model->imageFile = UploadedFile::getInstance($model, 'imageFile');

        if ($model->upload()) {

            // 上传成功

            return $this->redirect(['view', 'id' => $model->id]);

        }

    }

    return $this->render('upload', ['model' => $model]);

}

其中,UploadForm是一个表单模型,imageFile是表单中上传图片的input的name属性。

2.删除图片

public function delete($id)

{

    $model = $this->findModel($id);

    $qiniu = Yii::$app->qiniu;

    $key = $model->image;

    $qiniu->delete($key);

    $model->delete();

    return $this->redirect(['index']);

}

3.获取图片URL

public function actionView($id)

{

    $model = $this->findModel($id);

    $qiniu = Yii::$app->qiniu;

    $url = $qiniu->get($model->image);

    return $this->render('view', [

        'model' => $model,

        'url' => $url,

    ]);

}

三、Demo

下面给出一个简单的图片上传、查看和删除的Demo。 

1.创建控制器

在控制器中添加上述的方法。

2.创建模型

用gii生成一个模型,并添加上传图片的字段。

3.创建视图

在视图中添加表单,处理上传图片的逻辑。 

index.php:

<?php

use yii\helpers\Html;

use yii\grid\GridView;

/* @var $this yii\web\View */

/* @var $dataProvider yii\data\ActiveDataProvider */

$this->title = 'Images';

$this->params['breadcrumbs'][] = $this->title;

?>

<div class="image-index">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>

        <?= Html::a('Create Image', ['create'], ['class' => 'btn btn-success']) ?>

    </p>

    <?= GridView::widget([

        'dataProvider' => $dataProvider,

        'columns' => [

            ['class' => 'yii\grid\SerialColumn'],

            'id',

            'name',

            'image',

            ['class' => 'yii\grid\ActionColumn'],

        ],

    ]); ?>

</div>

create.php:

<?php

use yii\helpers\Html;

use yii\widgets\ActiveForm;

/* @var $this yii\web\View */

/* @var $model app\models\Image */

/* @var $form ActiveForm */

?>

<div class="image-create">

    <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

        <?= $form->field($model, 'name') ?>

    

        <?= $form->field($model, 'imageFile')->fileInput() ?>

        <div class="form-group">

            <?= Html::submitButton('Upload', ['class' => 'btn btn-primary']) ?>

        </div>

    <?php ActiveForm::end(); ?>

</div>

view.php:

<?php

use yii\helpers\Html;

/* @var $this yii\web\View */

/* @var $model app\models\Image */

/* @var $url string */

$this->title = $model->name;

$this->params['breadcrumbs'][] = ['label' => 'Images', 'url' => ['index']];

$this->params['breadcrumbs'][] = $this->title;

?>

<div class="image-view">

    <h1><?= Html::encode($this->title) ?></h1>

    <p>

        <?= Html::a('Update', ['update', 'id' => $model->id], ['class' => 'btn btn-primary']) ?>

        <?= Html::a('Delete', ['delete', 'id' => $model->id], [

            'class' => 'btn btn-danger',

            'data' => [

                'confirm' => 'Are you sure you want to delete this item?',

                'method' => 'post',

            ],

        ]) ?>

    </p>

    <p>

        <?= Html::img($url) ?>

    </p>

</div>

4.运行程序

运行程序后会看到一个图片上传的页面。 

图片上传成功后会跳转到图片查看页面,其中包含了图片的URL。 

点击删除按钮会弹出确认框,确认删除后会删除图片并跳转到images列表。 

本文介绍了如何在Yii2.0中使用七牛扩展进行图片管理,给出了一个简单的Demo。七牛的优点在于提供了稳定、高效、安全的云存储服务,使得图片管理变得便捷而高效,适合于图片服务要求较高的开发者使用。