Yii 文件上传
您可以借助 yii \ web \ UploadedFile,models 和 yii \ widgets \ ActiveForm 轻松实现文件上传功能。
在根文件夹中创建一个 “上传” 目录。该目录将保存所有上传的图像。要上传单个文件,您需要为上传的文件实例创建模型和模型的属性。您还应该验证文件上传。
第1步 - 在 模型 文件夹中,使用以下内容创建一个名为 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; } } } ?>
在 图像 属性用于保存文件的实例。该 文件 验证规则确保了文件具有 PNG 或 JPG 扩展。该 上传 功能验证该文件并将其保存在服务器上。
第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 视图文件。 **
<? 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 选项。 fileInput() 方法呈现下面的html代码 -
<input type = "file">
上面的html代码允许用户选择和上传文件。
第5步 - 现在,如果您访问 http:// localhost:8080 / index.php?r = site / upload- image ,您将看到以下内容。
第6步 - 选择一个图片上传并点击“提交”按钮。 该文件将被保存在 “上传” 文件夹内的服务器上 。
下一章:Yii 格式化
要以可读格式显示数据,可以使用 格式化 程序组件。第一步 -添加 actionFormatter 方法将 SiteController 。public function actionFormatter(){ return $ ...