yii2.0单文件上传和多文件上传
yii2文件上传使用到yii2自带的文件上传类UploadFIle,以及对应的模型规则,这里分别介绍单文件上传和多文件上传:
yii2单个文件上传:
上传步奏,先创建上传表单模型model(包含验证规则),其次控制器操作action,以及相对应的view:
model层:
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'=>'文件上传'
];
}
} UploadForm.php [多文件上传模型]
<?php
namespace app\models; use Yii;
use yii\base\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,'extensions'=>'jpg,png,gif'],
];
} public function attributeLabels(){
return [
'file'=>'多文件上传'
];
} Controller层,以TestController中的upload操作和upmore操作
<?php
namespace app\controllers; use Yii;
use yii\web\Controller;
use app\models\Upload;
use app\models\UploadForm;
use yii\web\UploadedFile; class TestController extends Controller{ public function actionIndex(){
return $this->renderPartial('index');
} /**
* @return string|\yii\web\Response
* 单文件上传
*/
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,0775,true);
}
$file->saveAs($path . time() . '.' . $file->getExtension());
Yii::$app->session->setFlash('success','上传成功!');
return $this->redirect('upload');
}
} return $this->render('upload',['model'=>$model]);
} public function actionUpmore(){
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$file = UploadedFile::getInstances($model, 'file'); if ($file && $model->validate()) {
echo "<pre/>"; foreach ($file as $fl) {
$fl->saveAs('uploads/' .mt_rand(1100,9900) .time() .$fl->baseName. '.' . $fl->extension);
}
Yii::$app->session->setFlash('success','上传成功!');
return $this->redirect('upmore');
}
} return $this->render('upmore', ['model' => $model]);
}
}
view:层
[单文件view uplod.php]
<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h4>文件上传</h4>
<?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>
[多文件view upmore.php]
<?php use yii\helpers\Html;
use yii\widgets\ActiveForm; ?>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h4>多文件上传</h4>
<?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(['multiple' => true]);?>
<?= Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
<?php ActiveForm::end(); ?> </body>
</html>
yii2.0单文件上传和多文件上传的更多相关文章
- yii2.0的gradview点击按钮通过get方式传参
1.直接看views层里的代码就可以了 , <!--?= GridView::widget([ 'dataProvider' =--> $dataProvider, 'filterMode ...
- Yii2.0.7 限制user module登录遇到的问题
在Yii2.0.6的时候我是在以下文件通过以下方法实现的. frontend/modules/user/Module.php namespace frontend\modules\user; clas ...
- 8.Yii2.0框架控制器接收get.post数据
8.Yii2.0框架控制器接收get.post数据 一.get传参 <?php /** * Created by Haima. * Author:Haima * QQ:228654416 * D ...
- YII2.0上传文件
针对于YII2.0官方手册来说,我稍微修改了一些内容具体的就是把model层里定义的uoload方法在controller方法里合并了 创建模型 namespace app\models; use y ...
- Yii2表单提交(带文件上传)
今天写一个php的表单提交接口,除了基本的字符串数据,还带文件上传,不用说前端form标签内应该有这些属性 <form enctype="multipart/form-data&quo ...
- asp.net.mvc 的单文件上传和多文件上传的简单例子
首先打开vs2012,创建空的mvc4项目,名称为MVCStudy,选择基本模板
- SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程 ...
- 文件的上传(表单上传和ajax文件异步上传)
项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举的主要对于小文件上传的处理! 资源下载: 一. ...
- 普通文件的上传(表单上传和ajax文件异步上传)
一.表单上传: html客户端部分: <form action="upload.ashx" method="post" enctype="mul ...
随机推荐
- IE11仿真文档模式默认IE5 IE7的调整办法
<meta http-equiv="X-UA-Compatible" content="IE=edge">
- MacOSX中使用NSWindow创建背景透明的窗体
1.Windows 在window上创建异形窗体必须要使用WS_EX_LAYERED样式,再调用SetLayeredWindowAttributes设置透明度或者透明颜色属性.用updatelayer ...
- LINUX安装SVN+添加自动同步+远程下载最新代码
LINUX安装SVN+添加自动同步+远程下载最新代码---------------------1. 新建一个用户:svnroot ,以下操作非特别说明皆为root用户操作--------------- ...
- http学习笔记(3)
几乎所有的http通信都是由TCP/IP承载的.http好比一辆汽车,而TCP是一条公路,所有的汽车都要在公路上跑,看看http是如何在tcp这条公路上往返的. 首先简单地看看tcp,TCP连接是通过 ...
- 语音频谱语音信号处理之(四)梅尔频率倒谱系数(MFCC)
今天一直在查找语音频谱之类的问题,今天正好有机会和大家共享一下. 语音信号处置之(四)梅尔频率倒谱系数(MFCC) zouxy09@qq.com http://blog.csdn.net/zouxy0 ...
- 开发一个微信小程序教程
一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可. 2.注册成功后进入首页,在 小程序发布流程->小程序 ...
- SqlServer创建数据表描述及列描述信息
SqlServer创建数据表描述及列描述信息 Intro Q: 为什么要创建描述信息? A: 鼠标悬停在对应表和列上时,会出现描述信息,可以提高工作的效率,借助工具我们根据数据表可以生成Model,可 ...
- 驱动10.nor flash
1 比较nor/nand flash NOR NAND接口: RAM-Like,引脚多 引脚少, ...
- Redmine管理项目3-调整用户显示格式
在 Redmine 中新建用户时是这样的: 必须指定姓氏.名字,然后 Redmine 默认是按“名字 姓氏”这种方式显示用户.比如“张三”,会显示成“三张”……看起来好别扭啊. 怎么调整呢,参看 Re ...
- Crystal Report 纵向排列,多列格式化
一个表格区域就是一条数据,一张A4纸分布成2列4行打印. 这与通常的报表有点不一样,通常报表的明细都是一条一行:而现在要每2条放在一行,这需要用到“多列格式化”属性. 选择"多列格式”后,会 ...