亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Yii2使用表單上傳文件的實例代碼

 更新時間:2017年08月03日 10:11:48   作者:webclz  
本篇文章主要介紹了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(...)。區(qū)別是后者不會執(zhí)行$model->validate(),所以需要手動的去執(zhí)行$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、多文件上傳

如果你想一次上傳多個文件,只需調節(jié)幾個參數就可以達到目的

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Yii框架核心組件類實例詳解

    Yii框架核心組件類實例詳解

    這篇文章主要介紹了Yii框架核心組件類,結合實例形式詳細分析了Yii框架中成員變量擴展、事件模型及行為類綁定相關原理與操作技巧,需要的朋友可以參考下
    2019-08-08
  • Smarty模板類內部原理實例分析

    Smarty模板類內部原理實例分析

    這篇文章主要介紹了Smarty模板類內部原理,結合實例形式模擬Smarty模板類的定義與應用,需要的朋友可以參考下
    2019-07-07
  • Laravel 5.4中migrate報錯: Specified key was too long error的解決

    Laravel 5.4中migrate報錯: Specified key was too long error的解決

    今天在執(zhí)行l(wèi)aravel migrate時出現異常,找了好半天才找到問題所在,所以這篇文章主要給大家介紹了關于Laravel 5.4中migrate報錯: Specified key was too long error的解決方法,需要的朋友可以參考下。
    2017-11-11
  • PHP學習記錄之常用的魔術常量詳解

    PHP學習記錄之常用的魔術常量詳解

    這篇文章主要介紹了PHP學習記錄之常用的魔術常量,結合實例形式總結分析了PHP魔術常量的功能、原理及常見操作技巧,需要的朋友可以參考下
    2019-12-12
  • Kindeditor編輯器添加圖片上傳水印功能(php代碼)

    Kindeditor編輯器添加圖片上傳水印功能(php代碼)

    這篇文章主要為大家詳細介紹了Kindeditor編輯器加圖片上傳水印功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • smarty中常用方法實例總結

    smarty中常用方法實例總結

    這篇文章主要介紹了smarty中常用方法,較為詳細的分析了smarty模板中較為常用的方法、屬性及環(huán)境變量等使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • php + WebUploader實現圖片批量上傳功能

    php + WebUploader實現圖片批量上傳功能

    這篇文章主要給大家介紹了利用php + WebUploader實現圖片批量上傳功能的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用PHP具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Laravel使用Caching緩存數據減輕數據庫查詢壓力的方法

    Laravel使用Caching緩存數據減輕數據庫查詢壓力的方法

    這篇文章主要介紹了Laravel使用Caching緩存數據減輕數據庫查詢壓力的方法,以項目實例形式較為詳細的分析了Laravel框架使用Caching緩存的原理與具體實現技巧,需要的朋友可以參考下
    2016-03-03
  • php實現給一張圖片加上水印效果

    php實現給一張圖片加上水印效果

    本文給大家匯總了2個php實現給圖片加水印的功能,第一個比較簡單易懂,第二個功能強大些,而且給大家封裝了起來,有需要的小伙伴可以參考下
    2016-01-01
  • php分頁思路以及在Zend?Framework框架中的使用

    php分頁思路以及在Zend?Framework框架中的使用

    php分頁思路以及在Zend?Framework框架中的使用,需要的朋友可以參考下
    2012-05-05

最新評論