博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YII2.0上传文件
阅读量:4354 次
发布时间:2019-06-07

本文共 2369 字,大约阅读时间需要 7 分钟。

针对于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 $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

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

视图和模型的连接

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

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:

 
['enctype' => 'multipart/form-data']]); ?>
field($model, 'file[]')->fileInput(['multiple' => true]) ?>
 

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

 
$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]); } }

转载于:https://www.cnblogs.com/wenxinphp/p/5800475.html

你可能感兴趣的文章
安卓学习-界面-ui-ImageView
查看>>
利用键值对来找对应值的信息
查看>>
JNI全局对象,及原生线程JNIENV传递
查看>>
POJ 1159 回文LCS滚动数组优化
查看>>
ASP.Net MVC3 - The easier to run Unit Tests by moq #Reprinted#
查看>>
《Python从入门基础到实践》
查看>>
for循环
查看>>
BZOJ2132: 圈地计划
查看>>
PHP数据库连接mysql与mysqli的区别与用法
查看>>
char * 与char []探究理解
查看>>
QT窗体显示在屏幕中间位置
查看>>
emmet使用技巧
查看>>
RPC-Thrift(二)
查看>>
MSSQL for Linux 安装指南
查看>>
【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试
查看>>
洛谷 P1036 选数
查看>>
女性社区TOP10
查看>>
BP神经网络算法推导及代码实现笔记zz
查看>>
前端必读:浏览器内部工作原理
查看>>
每天一个Linux命令(16)--which命令
查看>>