您可以借助yii \ web \ UploadedFile,模型和yii \ widgets \ ActiveForm轻松实现文件上传功能。
在根文件夹中创建目录“上载”。该目录将保存所有上传的图像。要上传单个文件,您需要为上传的文件实例创建模型和模型的属性。您还应该验证文件上传。
步骤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;
}
}
}
?>在图像属性用于保存文件的实例。该文件验证规则确保了文件具有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-选择要上传的图像,然后单击“提交”按钮。该文件将保存在服务器的“上载”文件夹中。

作者:terry,如若转载,请注明出处:https://www.web176.com/yii/487.html
支付宝
微信