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  [多文件上传模型]
<?phpnamespace 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>  
时间: 2024-10-22 13:30:01

yii2.0单文件上传和多文件上传的相关文章

yii2.0 单文件上传

$fileobj = UploadedFile::getInstanceByName('file'); \Helper::SaveUploadFile($fileobj, 'openfireimg'); public static function SaveUploadFile($file, $folder) { if(empty($file) || empty($folder)) { return false; } $time = time(); $targetPath = self::get

yii2.0 框架 载入 PHPExcel 类

我用的是composer 安装的, 自己引入的话找了好多的方法但是都不能引入 所以找了这个简单一点的. composer require "phpoffice/phpexcel"    用这个命令下载就可以(等一会时间),前提是你已经安装的composer 如果没有,就安装一个,就不多说了. 安装完成后 window 下打开命令窗口 输入compposer 查看是否安装成功,然后打开你的yii2.0(高级版)框架的verdor 这个文件夹 Shift+右键,打开命令窗口,运行上面那个下

YII2.0上传文件

针对于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 [ [['imageFil

SpringMVC实现单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和SpringMVC文件

asp.net.mvc 的单文件上传和多文件上传的简单例子

首先打开vs2012,创建空的mvc4项目,名称为MVCStudy,选择基本模板 1)创建项目后,基本结构是这样的 2)建立对应的HomeController,视图index.fileupload.success.error页面 3)控制器源码 using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;using System.Web.Mvc;using Sys

yii2.0下,单图片上传到搜狐云台以及图片上传到本机。

图片服务器接的是搜狐云台.在搜狐云台上有代码包,下载下来,放到yii框架的vendor下. yii2.0导入第三方库,很简单,写个autoload的文件,然后在入口脚本index.php中包含那个autoload文件就好了.具体到这个云台的库,只要包含代码中的autoload文件就好了. 简单介绍下搜狐云台的实现,用户会有一个对应的域名,然后选择建一些bucket,文件的上传下载都是在这个bucket中执行.函数调用在云台提供的文档中介绍的很清楚.这里就不再介绍了.同时我只从php的部分来介绍,

SpringMVC单文件上传、多文件上传、文件列表显示、文件下载(转)

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程免费下载 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和Spr

利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)

在很多企业级应用中,我们都没法直接通过开发语言sdk包封装的http工具来模拟http复合表单(multipart/form-data),特别是在跨语言跨平台的编程过程中,其实实现方案并不复杂,只要你了解了http协议中复合表单的报文结构就很简单了: httpheader ------时间戳------ 表单参数1 ------时间戳------ 表单参数2 ------时间戳------ 文件1的描述+二进制信息 ------时间戳------ 文件2的描述+二进制信息 下面我们进一步以一段c

单文件上传与多文件上传的文件上传类

1.单文件上传 form.html <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="100000000"> <input type="file" n