Search code examples
phpfile-uploadyii2

Problems getting instance of UploadedFile in Yii2


I tried to upload a file to a server using UploadedFile class, but I can't get an Instance. In my Model:

public $arch;
public function rules() {
    return [[['arch'], 'file']];
}

Before $model->arch = file_xxxx.jpg

Controller:

$model->arch = UploadedFile::getInstance($model, 'arch');

After this $model->arch is NULL

View:

$form = ActiveForm::begin(
    ['id' => 'contact-form'],
    ['options' => ['enctype' => 'multipart/form-data']]
);
print $form->field($model, 'arch')->fileInput()->label(false);

Solution

  • You can try to get a file as follows:

    // View
    <?= $form->field($model, 'arch')->fileInput(); ?>
    
    // Controller
    $model->arch = UploadedFile::getInstanceByName('arch');
    

    getInstanceByName() - returns an uploaded file according to the given file input name.

    Complete yii2 Uploading Files guide.