Yii2.0七牛扩展配置及图片管理Demo
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。七牛的优点在于提供了稳定、高效、安全的云存储服务,使得图片管理变得便捷而高效,适合于图片服务要求较高的开发者使用。
