首先在app\controllers下建立TestController.php,内容为如下代码:

 <?php
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\Upload;
use yii\web\UploadedFile; class TestController extends Controller
{
public function actionUpload()
{
$model = new Upload();
if (Yii::$app->request->isPost) {
$file = UploadedFile::getInstance($model, 'file');
$path="uploads/".date("YmdH",time())."/";
if ($file && $model->validate()) {
if (!file_exists($path)) {
mkdir($path,0777, true);
}
$file->saveAs($path . time() . '.' . $file->getExtension());
Yii::$app->session->setFlash('success', '上传成功!');
}
}
return $this->render('upload', ['model' => $model]);
}
}

需要注意的是,当app\web下面没有uploads文件夹时,需要建立,在上述代码中,建立的存储图片的文件夹为 "uploads/".date("YmdH",time())."/" ,因为存在层级目录,所以在使用mkdir()函数的时候,括号内的最后一个参数true必须要填,如果不填,则是代表建立的目录只有一个层级,如 "uploads/" ,这时就不能加上后面的以时间为下一层级的目录了。上述使用mkdir()函数建立的文件夹在app\web下。其中 Yii::$app->session->setFlash('success', '上传成功!'); 是当图片上传成功后,传递上传成功的提示在view里面显示。

app\models下建立Upload.php,代码如下:

 <?php
namespace app\models;
use Yii;
use yii\base\Model; class Upload extends Model{
public $file;
public function rules(){
return [
[['file'], 'file', 'extensions' => 'jpg, png', 'mimeTypes' => 'image/jpeg, image/png',],
];
}
public function attributeLabels(){
return [
'file'=>'文件上传'
];
}
}

然后在views下建立test\upload.php,代码如下:

 <?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<?php if(Yii::$app->session->hasFlash('success')):?>
<div class="alert alert-danger">
<?=Yii::$app->session->getFlash('success')?>
</div>
<?php endif ?>
<?php $form=ActiveForm::begin([
'id'=>'upload',
'enableAjaxValidation' => false,
'options'=>['enctype'=>'multipart/form-data']
]);
?>
<?= $form->field($model, 'file')->fileInput();?>
<?= Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
<?php ActiveForm::end(); ?> </body>
</html>

其中

 <?php if(Yii::$app->session->hasFlash('success')):?>
<div class="alert alert-danger">
<?=Yii::$app->session->getFlash('success')?>
</div>
<?php endif ?>

就是当图片上传成功后,显示从Testcontroller中传过来的参数。

Yii2文件上传的更多相关文章

  1. [YII2] 文件上传类

    //测试文件上传类 public function actionCreate() { $model = new Lvyou(); $upload_model = new \app\models\Upl ...

  2. yii2 文件上传

    直接贴代码了 --------------------------------------------------------------------------------------------- ...

  3. yii2.0单文件上传和多文件上传

    yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传: yii2单个文件上传: 上传步奏,先创建上传表单模型model(包含验证规 ...

  4. YII2.0上传文件

    针对于YII2.0官方手册来说,我稍微修改了一些内容具体的就是把model层里定义的uoload方法在controller方法里合并了 创建模型 namespace app\models; use y ...

  5. Yii2表单提交(带文件上传)

    今天写一个php的表单提交接口,除了基本的字符串数据,还带文件上传,不用说前端form标签内应该有这些属性 <form enctype="multipart/form-data&quo ...

  6. Yii2 UploadedFile上传文件

    通过 UploadFile::getInstance($model, $attribute); UploadFile::getInstances($model, $attribute); Upload ...

  7. 本文档教授大家在yii2.0里实现文件上传 首先我们来实现单文件上传

    第一步  首先建立一个关于上传的model层  如果你有已经建好的可以使用表单小部件的model层 也可以直接用这个.在这里我们新建一个新的model层 在model层新建文件  Upload.php ...

  8. iframe 模拟ajax文件上传and formdata ajax 文件上传

    对于文件上传 有好多种方式,一直想总结 文件上传的方法 今天就来写下 iframe  的文件上传的代码 本人语言表达能里有限,不多说了 直接上代码. 首先看 总体页面. 总共就三个文件. 实际上也就是 ...

  9. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

随机推荐

  1. linux终端使用技巧

    Shift+Ctrl+T:新建标签页Shift+Ctrl+W:关闭标签页Ctrl+PageUp:前一标签页Ctrl+PageDown:后一标签页Shift+Ctrl+PageUp:标签页左移Shift ...

  2. java 调用grads 自动批量生成图片

    将 -lbcx 命令 后面的4个参数(gs文件名.参数1.参数2.参数3) 放在单引号里面就可以执行了.

  3. 测试驱动开发神器框架Mockito

    作为菜鸟的我,以前没接触过Mock类型的框架,比如说要测试action层,我总是从action层调用service再调用dao访问数据库,这种方式从原则上来说是无疑是非常正确的,在没用mock框架之前 ...

  4. api(接口)文档管理工具

    api(接口)文档管理工具 欢迎光临:博之阅API管理平台  ,做为一个app开发者,还没有用到api管理工具,你就OUT了 点击进入:程序员精华博客大全  

  5. Session机制(是对cookie的作用的提升,使用较多)

    1.Session作用类似于购物车,第一次,放入物品,可以获得Session的id,并可以设置id失效的时间,这样便于多次将物品放在购物车里面,使用的就是获取的Session的id: 2.Sessio ...

  6. PreparedStatement接口及其方法的使用

    PreparedStatement接口是Statement接口的子接口,使用它的好处有三个 一:简化代码,便于sql语句的书写 二:有效的禁止sql语句的注入,例如:用户名和密码,使用Prepared ...

  7. PHP生成 excl、word文件

    PHP生成 excl.word文件 $time = time();   $filename = date("Y年m月d日h点m分s秒", $time).'问卷数据';  $rows ...

  8. 链表——PowerShell版

    链表是由一系列节点串连起来组成的,每一个节点包括数值部分和指针部分,上一节点的指针部分指向下一节点的数值部分所在的位置. 在C语言中我们有两种方式来定义链表—— 1.定义结构体:来表示链表中的节点,节 ...

  9. codevs1137 计算系数

    1137 计算系数 2011年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 给定一 ...

  10. linux ssh 使用深度解析(key登录详解)

    SSH全称Secure SHell,顾名思义就是非常安全的shell的意思,SSH协议是IETF(Internet Engineering Task Force)的Network Working Gr ...