图像未在YII ActiveForm中上传


image is not uploading in YII ActiveForm

我是Yii的新手。我正在使用此代码

<?php$form=ActiveForm::begin(['options'=>['enctype'=>'multipart/form-data']]);?><?=$表单->字段($model,'description')->文本区域(['rows'=>6])?><?=$表单->字段($model,'image')->文件输入(['type'=>'file'])?><?=Html::submitButton($model->isNewRecord?"创建":"更新",['class'=>$model->is NewRecord?'btn-btn-success':'btn-btn-primary'])?>

当我试图在控制器中打印帖子数据时,图像字段将变为空白
如果我通过

$_FILES
打印,则显示文件数据。
请让我知道如何在帖子方法中获得图像。

步骤1:在模型文件中定义一个变量。

public $uploadedImage;

第2步:在您的控制器中,

$model->uploadedImage = UploadedFile::getInstance($model, 'image');
$model->image = $model->uploadedImage->name;

在save()方法之后,将其写入以存储图像

$model->uploadedImage->saveAs('YOUR_WEBDIR_IMAGES_FOLDER/' . $model->uploadedImage->baseName . '.' . $model->uploadedImage->extension);

[如果上面的解决方案不起作用,那么试试这个。:

定义另一个变量。

public $tempVarforImage;

在您的控制器中

$model->tempVarforImage = $model->uploadedImage->name;
$model->image = $model->tempVarforImage;

(因为有一次我遇到了数据库中"image"字段与基于yii2的"image"变量冲突的问题)]

  1. 创建UploadForm型号

    命名空间应用程序''模型;使用yii''base''Model;使用yii''web''UploadedFile;类UploadForm扩展Model{public$image;//图像名称公共函数规则(){返回[[['image'],'file'/*,'skipOnEmpty'=>false*//*,'extensions'=>'png,jpg'*/],];}公共函数上载($fileName){if($this->validate()){$this->image->saveAs($fileName);返回true;}其他{return false;}}}
  2. 控制器代码在文件顶部添加

    使用app''models''UploadForm;使用yii''web''UploadedFile;

    将此添加到您的功能中

    $model=User();if($model->load(Yii::$app->request->post()){$model1=new UploadForm();
    $model1->image = UploadedFile::getInstance($model, 'image');
    $fileName  = $model1->image->baseName.'_'.time();
    $extension = $model1->image->extension;
    $fileName   =   $fileName.'.'.$extension;
    $filePath   =   WEBSITE_SLIDER_ROOT_PATH.$fileName;     
    if ($model1->upload($filePath)) {
        //Save in database
    }   
    
    }