全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Yii2使用表单上传文件的实例代码

yii2用表单上传文件经常用到的,该怎样上传呢?

1、单个文件上传

首先建立一个模型models/UploadForm.php,内容如下

namespace app\models;

use yii\base\Model;
use yii\web\UploadedFile;

/**
 * UploadForm is the model behind the upload form.
 */
class UploadForm extends Model
{
  /**
   * @var UploadedFile file attribute
   */
  public $file;

  /**
   * @return array the validation rules.
   */
  public function rules()
  {
    return [
      [['file'], 'file'],
    ];
  }
}

再建立一个视图文件,内容如下

<?php
use yii\widgets\ActiveForm;
?>

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?>

<?= $form->field($model, 'file')->fileInput() ?>

<button>Submit</button>

<?php ActiveForm::end() ?>

最后建立控制器文件,内容如下

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::getInstance($model, 'file');

      if ($model->file && $model->validate()) {        
        $model->file->saveAs('uploads/' . $model->file->baseName . '.' . $model->file->extension);
      }
    }

    return $this->render('upload', ['model' => $model]);
  }
}

注意这里我们没有用model->load(...),而是用了UploadedFile::getInstance(...)。区别是后者不会执行$model->validate(),所以需要手动的去执行$model->validate()来检验数据的合法性。如果检验通过了,上传的文件保存在uploads文件夹下,即web目录下的uploads里。

一些可选的配置选项

上传文件不能为空

public function rules()
{
  return [
    [['file'], 'file', 'skipOnEmpty' => false],
  ];
}

上传类型,不仅可以根据扩展名检验,还可以根据文件的内容进行检验

public function rules()
{
  return [
    [['file'], 'file', 'extensions' => 'jpg, png', 'mimeTypes' => 'image/jpeg, image/png',],
  ];
}

2、多文件上传

如果你想一次上传多个文件,只需调节几个参数就可以达到目的

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:

<?php
use yii\widgets\ActiveForm;

$form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]);
?>

<?= $form->field($model, 'file[]')->fileInput(['multiple' => true]) ?>

  <button>Submit</button>

<?php ActiveForm::end(); ?>

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

$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://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.md

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Yii2  # 表单上传文件  # Yii  # Yii2使用自带的UploadedFile实现的文件上传  # Yii2组件之多图上传插件FileInput的详细使用教程  # yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法  # Yii2实现ajax上传图片插件用法  # yii2利用自带UploadedFile实现上传图片的示例  # yii2 上传图片的示例代码  # yii2高级应用之自定义组件实现全局使用图片上传功能的方法  # Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例  # yii2.0整合阿里云oss上传单个文件的示例  # Yii2.0多文件上传实例说明  # yii2多图上传组件的使用教程  # YII2框架实现表单中上传单个文件的方法示例  # 文件上传  # 上传  # 上传文件  # 的是  # 几个  # 还可以  # 多个  # 只需  # 你想  # 用了  # 扩展名  # 就可  # 可选  # 可以根据  # 建立一个  # 表单  # 这句  # 大家多多  # 就可以  # 为空 


相关文章: 西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?  公司网站的制作公司,企业网站制作基本流程有哪些?  贸易公司网站制作流程,出口贸易网站设计怎么做?  如何在西部数码注册域名并快速搭建网站?  建站主机解析:虚拟主机配置与服务器选择指南  *服务器网站为何频现安全漏洞?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  浅谈Javascript中的Label语句  制作门户网站的参考文献在哪,小说网站怎么建立?  如何在阿里云ECS服务器部署织梦CMS网站?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  ,在苏州找工作,上哪个网站比较好?  婚礼视频制作网站,学习*后期制作的网站有哪些?  在线教育网站制作平台,山西立德教育官网?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  建站主机选购指南:核心配置与性价比推荐解析  简单实现Android验证码  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何确保FTP站点访问权限与数据传输安全?  网站制作公司,橙子建站是合法的吗?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Python lxml的etree和ElementTree有什么区别  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何通过虚拟主机快速完成网站搭建?  定制建站流程步骤详解:一站式方案设计与开发指南  如何在Golang中引入测试模块_Golang测试包导入与使用实践  如何在云主机快速搭建网站站点?  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何选择高效响应式自助建站源码系统?  网站制作需要会哪些技术,建立一个网站要花费多少?  在线制作视频的网站有哪些,电脑如何制作视频短片?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  建站之星展会模版如何一键下载生成?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何用PHP快速搭建CMS系统?  如何获取PHP WAP自助建站系统源码?  如何在阿里云域名上完成建站全流程?  建站之星IIS配置教程:代码生成技巧与站点搭建指南  视频网站制作教程,怎么样制作优酷网的小视频?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  寿县云建站:智能SEO优化与多行业模板快速上线指南  建站之星安装需要哪些步骤及注意事项?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  南平网站制作公司,2025年南平市事业单位报名时间?  Android滚轮选择时间控件使用详解  Swift中switch语句区间和元组模式匹配  湖北网站制作公司有哪些,湖北清能集团官网?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  已有域名如何免费搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。