📜  Yii-文件上传

📅  最后修改于: 2020-10-16 07:17:04             🧑  作者: Mango


您可以借助yii \ web \ UploadedFile,模型yii \ widgets \ ActiveForm轻松实现文件上传函数。

在根文件夹中创建目录“上载” 。该目录将保存所有上传的图像。要上传单个文件,您需要为上传的文件实例创建模型和模型的属性。您还应该验证文件上传。

步骤1-models文件夹内,创建一个名为UploadImageForm.php的文件,其中包含以下内容。

 false, 'extensions' => 'jpg, png'],
         ];
      }
      public function upload() {
         if ($this->validate()) {
            $this->image->saveAs('../uploads/' . $this->image->baseName . '.' .
               $this->image->extension);
            return true;
         } else {
            return false;
         }
      }
   }
?>

image属性用于保留文件实例。文件验证规则可确保文件具有pngjpg扩展名。上载函数验证文件并将其保存在服务器上。

步骤2-现在,将actionUploadImage函数添加到SiteController

public function actionUploadImage() {
   $model = new UploadImageForm();
   if (Yii::$app->request->isPost) {
      $model->image = UploadedFile::getInstance($model, 'image');
      if ($model->upload()) {
         // file is uploaded successfully
         echo "File successfully uploaded";
         return;
      }
   }
   return $this->render('upload', ['model' => $model]);
}

步骤3-提交表单后,我们调用yii \ web \ UploadedFile :: getInstance()函数将上传的文件表示为UploadedFile实例。然后,我们验证文件并将其保存在服务器上。

步骤4-接下来,在views / site目录内创建一个upload.php视图文件。


 ['enctype' => 'multipart/form-data']])?>
= $form->field($model, 'image')->fileInput() ?>
   

上载文件时,请记住添加enctype选项。 fileInput()方法呈现以下html代码-


上面的html代码允许用户选择和上传文件。

步骤5-现在,如果您转到http:// localhost:8080 / index.php?r = site / upload-image ,则会看到以下内容。

选择上传文件

步骤6-选择要上传的图像,然后单击“提交”按钮。该文件将保存在服务器的“上载”文件夹中。

上载