Yii2独立文件上传

时间:2015-10-19 08:31:44

标签: php yii2 yii2-validation

我正在尝试上传没有ActiveForm或模型的个人资料图片。

根据Yii2文档,我们可以使用AdHoc Validation Rule,在此示例中,它使用电子邮件验证,但我需要文件验证。

我尝试了什么:

public function actionPicture() {

    /* @var $user \app\models\User */
    /* @var $validator \yii\validators\FileValidator */

    $validator = new FileValidator(['extensions' => ['png','jpg']]); // Setting Allowed Extensions

    $file = UploadedFile::getInstanceByName('avatar'); // Get File Object byName

    if( $validator->validate($file, $errors) ) { // Validate here
        $user = User::findOne(['id' => Yii::$app->user->getId()]);
        $user->avatar = 'profile-'.$user->id.'.'.$file->getExtension();
        if($user->save(false)) {
            $file->saveAs(Yii::getAlias('@upload_dir').'/'.$user->avatar);
            Yii::$app->user->setIdentity($user);
            yii::$app->session->setFlash('success','Profile Picture updated successfully');
        }

    } else {
        yii::$app->session->setFlash('danger',$errors);
    }

    return $this->redirect(['index']);

}

我的问题:在上面的代码中,它是使用FileValidator而不使用活动表单的标准方法。

注意:我知道我们可以使用Yii2 File Upload,但它使用的模型不是我想要的

0 个答案:

没有答案