yii 上传图片

简介:

针对于YII2.0官方手册来说,我稍微修改了一些内容具体的就是把model层里定义的uoload方法在controller方法里合并了

创建模型

namespace app\models;

use yii\base\Model;

use yii\web\UploadedFile;

class UploadForm extends Model{

 public $imageFile;//定义一个公用的名称

  public function rules() {

    return [ [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'], ];//extensions 这边报错的话就把这个设置关闭(删除后缀代码就好了)

  }

 

}

 

渲染文件输入

 

接下来,在视图里创建一个文件输入控件

<?php
use yii\widgets\ActiveForm; ?>

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

 <?= $form->field($model, 'imageFile')->fileInput() ?>
<button>Submit</button>
<?php ActiveForm::end() ?>

视图和模型的连接

现在,在控制器方法里编写连接模型和视图的代码以实现文件上传。

namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\UploadForm;
use yii\web\UploadedFile;
//需要自己手动创建uploads文件夹 创建在web访问目录下就ok了
class SiteController extends Controller{
    public function actionUpload()
    {
        $model = new UploadForm();

        if (Yii::$app->request->isPost) {
            $model->imageFile = UploadedFile::getInstance($model, 'imageFile');
            if ($model->upload()$model->validata()) {//这点就是改变的所在
$model->file->saveAs('uploads/'.$model->file->baseName.'.'.$model->file->extension); // 文件上传成功 return; } } return $this->render('upload', ['model' => $model]); } }

恭喜你已经学会YII2.0中的上传了

扩展::《多文件上传》

如果你想一次上传多个文件,只需调节几个参数就可以达到目的

Model:

class UploadForm extends Model { /** * @var UploadedFile|Null file attribute */ public $file; /** * @return array the validation rules. */ public function rules() { return [ [['file'], 'file', 'maxFiles' => 10], // <--- here! ]; } } 

View:

<?php
use yii\widgets\ActiveForm; $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> <?= $form->field($model, 'file[]')->fileInput(['multiple' => true]) ?> <button>Submit</button> <?php ActiveForm::end(); ?> 

与单文件上传不同的是下面这句

$form->field($model, 'file[]')->fileInput(['multiple' => true])

Controller:

namespace app\controllers;

use Yii; use yii\web\Controller; use app\models\UploadForm; use yii\web\UploadedFile; class SiteController extends Controller { public function actionUpload() { $model = new UploadForm(); if (Yii::$app->request->isPost) { $model->file = UploadedFile::getInstances($model, 'file'); if ($model->file && $model->validate()) { foreach ($model->file as $file) { $file->saveAs('uploads/' . $file->baseName . '.' . $file->extension); } } } return $this->render('upload', ['model' => $model]); } }
目录
相关文章
|
7月前
|
PHP
thinkphp中自定义文件上传
thinkphp中自定义文件上传
39 0
|
7月前
|
小程序 JavaScript
在使用微信小程序开发中用vant2框架中的Uploader 文件上传wx.uploadFile无反应和使用多图上传
网上有的说是bind:after-read="afterRead"的命名问题不支持-,但是我这儿执行了console.log("file",file);证明函数运行了。后来发现是multiple="true"原因开启了多图上传,如果是多图上传的话file就是数组了
412 2
|
7月前
UEditor配置后端上传图片
UEditor配置后端上传图片
131 0
UEditor配置后端上传图片
|
JavaScript 前端开发 API
yii2.0实现的网站首页有很多图片,如何最快速的实现所有图片的懒加载?
yii2.0实现的网站首页有很多图片,如何最快速的实现所有图片的懒加载?
|
JavaScript 前端开发 API
【Vue】 前端上传图片时限制只可以按文件夹上传图片( webkitdirectory )
【Vue】 前端上传图片时限制只可以按文件夹上传图片( webkitdirectory )
【Vue】 前端上传图片时限制只可以按文件夹上传图片( webkitdirectory )
|
存储 中间件 数据库
koa处理上传图片
koa处理上传图片
C# WebService 上传图片
C# WebService 上传图片
126 0
|
存储 缓存 安全
Yii2文件/图片上传实例
Yii2文件/图片上传实例
393 0
Yii2文件/图片上传实例
【ThinkPHP5.1】使用layui的图片上传显示问题
【ThinkPHP5.1】使用layui的图片上传显示问题
612 0
【ThinkPHP5.1】使用layui的图片上传显示问题
Fckeditor中使用图片上传
本文主要讲Fckeditor中使用图片上传
133 0
Fckeditor中使用图片上传