Yii2 上传图片

刚学习yii2有点头大,这个图片多图功能后续另外再测试下.目前单图上传无压力..

1- 首先先搭个简单的数据库

product | CREATE TABLE `product` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `title` varchar(255) NOT NULL,
  `bigpic` varchar(255) NOT NULL,
  `smallpics` varchar(255) NOT NULL,
  `desc` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 

2- 搭建完毕数据,可以用Gii生成下model和CURD,这个不累赘说明

3- 在controller里开始写逻辑,涉及上传可以考虑内置的UploadedFile.用这个吧

use yii\web\UploadedFile;

    public function actionCreate()
    {
        $model = new Product();
        $uploadSuccessPath = "";

        if ($model->load(Yii::$app->request->post()) ) {
            $model->bigpic = UploadedFile::getInstance($model,'bigpic');

            $dir = './uploads/'.date("Ymd");

            if(!is_dir($dir)){
                mkdir($dir,0777,true);
            }

            if($model->validate()){
                $filename = date("YmdHms").$model->bigpic->baseName . "." . $model->bigpic->extension;
                $dir = $dir."/". $filename;
                $model->bigpic->saveAs($dir);
            }

            $model->save();
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }

为了省麻烦,我在Create里面直接做,视图因为引用的是_form.php模板, 所以里面去修改

用composer安装下组件,然后操作

$ php composer.phar require kartik-v/yii2-widget-fileinput "@dev"

进一步编辑视图,这个参考这个Github项目

use yii\helpers\Html;
use yii\widgets\ActiveForm;
use kartik\file\FileInput;

<div class="product-form">

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

    <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>

    <?php
        echo $form->field($model, 'bigpic')->label('多图上传')->widget(FileInput::classname(), [
            'options' => ['multiple' => true],
            'pluginOptions' => [
                    'showUpload' => false,
                    'browseLabel' => '',
                    'removeLabel' => '',
                    'mainClass' => 'input-group-lg'
                ]
            ]);
     ?>
    <?php  echo $form->field($model, 'smallpics')->textInput(['maxlength' => true]) ?>

    <?= $form->field($model, 'desc')->textarea(['rows' => 6]) ?>

    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值