yii2上传整理

来源:互联网 发布:c语言浮点数表示方法 编辑:程序博客网 时间:2024/06/15 19:05

yii2  上传整理

以yii2框架的自带的注册为例


一、单文件上传


1.1.1  视图显示,打开frontend/views/site/signup.php

1.1.2  添加上传文件框   <?= $form->field($model, 'file')->fileInput() ?>

1.2.1 model处理,打开frontend/models/SignupForm.php

1.2.1 定义属性  public $file;


1.2.2 添加规则   ['file', 'file','extensions'=>'jpg,png','maxFiles'=>3],

还可以添加很多限制  更多规则看yii2手册:http://www.yiichina.com/doc/api/2.0/yii-validators-filtervalidator

1.3.1 控制器处理,打开frontend/controllers/SiteController.php

1.3.2 文件最上边写命名空间   use yii\web\UploadedFile;

1.3.3 这里就到最要的部分了

1.3.4 创建上传文件要放的文件夹

    if(!is_dir("upload/")){
            mkdir("upload/");
        }    
文件夹创建到了frontend\web\下


1.3.5 接收文件   $file = UploadedFile::getInstances($model,"file");

1.3.6 $file->saveAs("upload/"."file_".time()."_".rand(1111,9999).".".$file->extension); 保存文件到指定目录

这时候去执行你就会发现上传成功,文件已经移动到文件夹并且是制定的文件名格式

OK 单文件上传成功

二 、 多文件处理

2.1.1  单文件上传好好看的话多文件处理一看就懂 在这就不说这么详细了,直接上代码

2.1.2  视图显示,打开frontend/views/site/signup.php

2.1.3  添加上传文件框   <?= $form->field($model, 'file[]')->fileInput(['multiple'=>true]) ?>  


2.1.4  循环添加到本地

foreach ($file as $file) {
            $file->saveAs("upload/"."file_".time()."_".rand(1111,9999).".".$file->extension);
            }

2.1.5   OK多个文件成功

三、入库

3.1.1  DAO模式入库到另外一张表,并且存入User表里的ID


3.1.2 入库代码,下面上截图详细解说

foreach ($file as $file) {
            $file->saveAs("upload/"."file_".time()."_".rand(1111,9999).".".$file->extension);
            $files['file'] = "upload/"."file_".time()."_".rand(1111,9999).".".$file->extension;
            $files['uid']=$user['id'];
            Yii::$app->db->createCommand()->insert('file',$files)->execute();
        }

ok  多个文件上传成功并且路径入库

想追原理的可以每一步都打印一下