File upload 文件未在yii2中上载

File upload 文件未在yii2中上载,file-upload,yii2,File Upload,Yii2,我想上传一张图片并保存到我的数据库中。 这里,数据库中的字段名是image\u path。当我试图上传我的图像时,它显示了一个错误:对非对象在线调用成员函数saveAs() $customer->file->saveAs('uploads/customer/' . $customer->file->baseName . '.' . $customer->file->extension); 如果我打印var\u dump($customer->file)返回N

我想上传一张图片并保存到我的数据库中。 这里,数据库中的字段名是
image\u path
。当我试图上传我的图像时,它显示了一个错误:对非对象在线调用成员函数
saveAs()

$customer->file->saveAs('uploads/customer/' . $customer->file->baseName . '.' . $customer->file->extension);
如果我打印
var\u dump($customer->file)返回NULL

谁能帮我解决这个问题

这是我的观点:

    <?php $form = ActiveForm::begin([
            'id' => 'my-profile',
            'action' => \Yii::$app->urlManager->createUrl(['/myprofile', 'id_customer' => Yii::$app->user->identity->id_customer]),                     
            'options' => ['enctype'=>'multipart/form-data']
    ]); ?>
    <?= $form->field($customer, 'file')->fileInput() ?>
    <?php ActiveForm::end(); ?>
public $file;
public function rules()
{
    return [
        ['active', 'default', 'value' => self::STATUS_ACTIVE],
        ['active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],            
        [['file'],'file'],
        [['name', 'image_path'], 'string', 'max' => 200],            
    ];
}

public function attributeLabels()
{
    return [            
        'file' => 'Profile Picture ',            
    ];
}
<?php $form = ActiveForm::begin([
        'id' => 'my-profile',
        'action' => \Yii::$app->urlManager->createUrl(['/myprofile', 'id_customer' => Yii::$app->user->identity->id_customer]),                     
        'options' => ['enctype'=>'multipart/form-data']
]); ?>
<?= $form->field($customer, 'image_path')->fileInput() ?>
<?php ActiveForm::end(); ?>
public function rules()
{
  return [
    ['active', 'default', 'value' => self::STATUS_ACTIVE],
    ['active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],            
    [['image_path'],'file'],
    [['name', 'image_path'], 'string', 'max' => 200],            
  ];
}

public function attributeLabels()
{
   return [            
       'image_path' => 'Profile Picture ',            
   ];
}
public function actionCreate()
{
    $model = new YourModel_name();          

    if ($model->load(Yii::$app->request->post())) {
        $model->image_path = UploadedFile::getInstance($model, 'image_path');

        $filename = pathinfo($model->image_path , PATHINFO_FILENAME);
        $ext = pathinfo($model->image_path , PATHINFO_EXTENSION);

        $newFname = $filename.'.'.$ext;

        $path=Yii::getAlias('@webroot').'/image/event-picture/';
        if(!empty($newFname)){
            $model->image_path->saveAs($path.$newFname);
            $model->image_path = $newFname; 
            if($model->save()){
                return $this->redirect(['your redirect_path', 'id' => $model->id]);
            }       
        }           
    } 
    return $this->render('create', [
        'model' => $model,
    ]);
}
这是我的控制器:

public function actionMyprofile(){   

  $customer->file = UploadedFile::getInstance($customer,'image_path');      
  $customer->file->saveAs('uploads/customer/' . $customer->file->baseName . '.' . $customer->file->extension);
  $customer->file = 'uploads/customer/' . $customer->file->baseName . '.' . $customer->file->extension;
}
查看:

    <?php $form = ActiveForm::begin([
            'id' => 'my-profile',
            'action' => \Yii::$app->urlManager->createUrl(['/myprofile', 'id_customer' => Yii::$app->user->identity->id_customer]),                     
            'options' => ['enctype'=>'multipart/form-data']
    ]); ?>
    <?= $form->field($customer, 'file')->fileInput() ?>
    <?php ActiveForm::end(); ?>
public $file;
public function rules()
{
    return [
        ['active', 'default', 'value' => self::STATUS_ACTIVE],
        ['active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],            
        [['file'],'file'],
        [['name', 'image_path'], 'string', 'max' => 200],            
    ];
}

public function attributeLabels()
{
    return [            
        'file' => 'Profile Picture ',            
    ];
}
<?php $form = ActiveForm::begin([
        'id' => 'my-profile',
        'action' => \Yii::$app->urlManager->createUrl(['/myprofile', 'id_customer' => Yii::$app->user->identity->id_customer]),                     
        'options' => ['enctype'=>'multipart/form-data']
]); ?>
<?= $form->field($customer, 'image_path')->fileInput() ?>
<?php ActiveForm::end(); ?>
public function rules()
{
  return [
    ['active', 'default', 'value' => self::STATUS_ACTIVE],
    ['active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],            
    [['image_path'],'file'],
    [['name', 'image_path'], 'string', 'max' => 200],            
  ];
}

public function attributeLabels()
{
   return [            
       'image_path' => 'Profile Picture ',            
   ];
}
public function actionCreate()
{
    $model = new YourModel_name();          

    if ($model->load(Yii::$app->request->post())) {
        $model->image_path = UploadedFile::getInstance($model, 'image_path');

        $filename = pathinfo($model->image_path , PATHINFO_FILENAME);
        $ext = pathinfo($model->image_path , PATHINFO_EXTENSION);

        $newFname = $filename.'.'.$ext;

        $path=Yii::getAlias('@webroot').'/image/event-picture/';
        if(!empty($newFname)){
            $model->image_path->saveAs($path.$newFname);
            $model->image_path = $newFname; 
            if($model->save()){
                return $this->redirect(['your redirect_path', 'id' => $model->id]);
            }       
        }           
    } 
    return $this->render('create', [
        'model' => $model,
    ]);
}
控制器:

    <?php $form = ActiveForm::begin([
            'id' => 'my-profile',
            'action' => \Yii::$app->urlManager->createUrl(['/myprofile', 'id_customer' => Yii::$app->user->identity->id_customer]),                     
            'options' => ['enctype'=>'multipart/form-data']
    ]); ?>
    <?= $form->field($customer, 'file')->fileInput() ?>
    <?php ActiveForm::end(); ?>
public $file;
public function rules()
{
    return [
        ['active', 'default', 'value' => self::STATUS_ACTIVE],
        ['active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],            
        [['file'],'file'],
        [['name', 'image_path'], 'string', 'max' => 200],            
    ];
}

public function attributeLabels()
{
    return [            
        'file' => 'Profile Picture ',            
    ];
}
<?php $form = ActiveForm::begin([
        'id' => 'my-profile',
        'action' => \Yii::$app->urlManager->createUrl(['/myprofile', 'id_customer' => Yii::$app->user->identity->id_customer]),                     
        'options' => ['enctype'=>'multipart/form-data']
]); ?>
<?= $form->field($customer, 'image_path')->fileInput() ?>
<?php ActiveForm::end(); ?>
public function rules()
{
  return [
    ['active', 'default', 'value' => self::STATUS_ACTIVE],
    ['active', 'in', 'range' => [self::STATUS_ACTIVE, self::STATUS_DELETED]],            
    [['image_path'],'file'],
    [['name', 'image_path'], 'string', 'max' => 200],            
  ];
}

public function attributeLabels()
{
   return [            
       'image_path' => 'Profile Picture ',            
   ];
}
public function actionCreate()
{
    $model = new YourModel_name();          

    if ($model->load(Yii::$app->request->post())) {
        $model->image_path = UploadedFile::getInstance($model, 'image_path');

        $filename = pathinfo($model->image_path , PATHINFO_FILENAME);
        $ext = pathinfo($model->image_path , PATHINFO_EXTENSION);

        $newFname = $filename.'.'.$ext;

        $path=Yii::getAlias('@webroot').'/image/event-picture/';
        if(!empty($newFname)){
            $model->image_path->saveAs($path.$newFname);
            $model->image_path = $newFname; 
            if($model->save()){
                return $this->redirect(['your redirect_path', 'id' => $model->id]);
            }       
        }           
    } 
    return $this->render('create', [
        'model' => $model,
    ]);
}

将控制器中的
图像路径
替换为
文件
,请参见您的模型规则。
UploadedFile::getInstance($customer,'image\u path')应该是
UploadedFile::getInstance($customer,'file'),因为前几天我问了一个问题,但没有得到准确的答案。在这样做之后,它仍然是一样的。