Yii 文件上传

Yii 文件上传

通过使用 yii\web\UploadedFile, modelsyii\widgets\ActiveForm 的帮助,您可以轻松实现文件上传功能。

在根文件夹中创建一个名为 ‘uploads’ 的目录。该目录将保存所有上传的图片。要上传单个文件,您需要创建一个模型和一个模型属性来存储上传文件实例。您还应该验证文件上传。

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

<?php
   namespace app\models;
   use yii\base\Model;
   class UploadImageForm extends Model {
      public image;
      public function rules() {
         return [
            [['image'], 'file', 'skipOnEmpty' => 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 用于保存文件实例。属性 file 验证规则确保文件具有 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;
      }
   }
   returnthis->render('upload', ['model' => $model]);
}

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

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

<?php
   use yii\widgets\ActiveForm;
?>
<?php form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']])?>
<?=form->field($model, 'image')->fileInput() ?>
   <button>Submit</button>
<?php ActiveForm::end() ?>

不要忘记在上传文件时添加 enctype 选项。

The fileInput() 方法呈现如下的 HTML 代码 –

<input type = "file">

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

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

Yii 文件上传

步骤6 - 选择要上传的图片并点击“提交”按钮。文件将保存在服务器上的 ‘uploads’ 文件夹内。

Yii 文件上传

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程