zoukankan      html  css  js  c++  java
  • Yii2文件上传

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

     1 <?php
     2 namespace appcontrollers;
     3 use Yii;
     4 use yiiwebController;
     5 use appmodelsUpload;
     6 use yiiwebUploadedFile;
     7 
     8 class TestController extends  Controller
     9 {
    10     public function actionUpload()
    11     {
    12         $model = new Upload();
    13         if (Yii::$app->request->isPost) {
    14             $file = UploadedFile::getInstance($model, 'file');
    15             $path="uploads/".date("YmdH",time())."/";
    16             if ($file && $model->validate()) {
    17                 if (!file_exists($path)) {
    18                     mkdir($path,0777, true);
    19                 }
    20                 $file->saveAs($path . time() . '.' . $file->getExtension());
    21                 Yii::$app->session->setFlash('success', '上传成功!');
    22             }
    23         }
    24         return $this->render('upload', ['model' => $model]);
    25     }
    26 }

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

        appmodels下建立Upload.php,代码如下:

     1 <?php
     2 namespace appmodels;
     3 use Yii;
     4 use yiiaseModel;
     5 
     6 class Upload extends Model{
     7     public $file;
     8     public function rules(){
     9         return [
    10             [['file'], 'file', 'extensions' => 'jpg, png', 'mimeTypes' => 'image/jpeg, image/png',],
    11         ];
    12     }
    13     public function attributeLabels(){
    14         return [
    15             'file'=>'文件上传'
    16         ];
    17     }
    18 } 

    然后在views下建立testupload.php,代码如下:

     1 <?php
     2 use yiihelpersHtml;
     3 use yiiwidgetsActiveForm;
     4 ?>
     5 <!doctype html>
     6 <html lang="en">
     7 <head>
     8     <meta charset="UTF-8">
     9     <title>文件上传</title>
    10 </head>
    11 <body>
    12 <?php if(Yii::$app->session->hasFlash('success')):?>
    13     <div class="alert alert-danger">
    14         <?=Yii::$app->session->getFlash('success')?>
    15     </div>
    16 <?php endif ?>
    17 <?php $form=ActiveForm::begin([
    18     'id'=>'upload',
    19     'enableAjaxValidation' => false,
    20     'options'=>['enctype'=>'multipart/form-data']
    21 ]);
    22 ?>
    23 <?= $form->field($model, 'file')->fileInput();?>
    24 <?=  Html::submitButton('提交', ['class'=>'btn btn-primary','name' =>'submit-button']) ?>
    25 <?php ActiveForm::end(); ?>
    26 
    27 </body>
    28 </html>

    其中

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

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

  • 相关阅读:
    vue开发chrome扩展,数据通过storage对象获取
    Vue手动集成less预编译器
    Google Translate寻找之旅
    Javascript Range对象的学习
    Javascript Promises学习
    SublimeText 建立构建Node js系统
    We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.
    npm安装包出现UNMET DEPENDENCY报错
    (转载)命令行说明中格式 尖括号 中括号的含义
    Linux重启网卡服务Failed to start LSB: Bring up/down networking.
  • 原文地址:https://www.cnblogs.com/jacson/p/4799056.html
Copyright © 2011-2022 走看看