如何在yii basic中的文件夹上传中将文件上传到服务器。 我试过但它的工作正常

问题描述:

Its not uploading the file the folder in the project.

How can I upload the the file?

public function actionCreate()
    {
        $model = new UploadForm();

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            $filename=$model->filename;
            $model->file= UploadedFile::getInstance($model,'file');
            $model->file->saveAs('uploads/' .$filename.'.'.$model->file->extension );

Declare an attribute to store the file name in the model class. Also declare a file validation rule for this attribute to ensure a file is uploaded with specific extension name.

Then, in the controller class define an action method to collect user-submitted data.

    $model = new UploadForm();
    if(isset(Yii::$app->request->post()))
    {
        $model->attributes=Yii::$app->request->post();
        $model->file=UploadedFile::getInstance($model,'file');
        if($model->save())
        {
            $model->file->saveAs('path/to/localFile');
        }
    }

It is not uploading, because you are calling $model->save() before adding a value to the $model->file field.

The code should look like

if ($model->load(Yii::$app->request->post())) {
    $filename = $model->ltkcnt_contracts_name;
    $model->file = UploadedFile::getInstance($model, 'file');
    if ($model->save()) {
        $model->file->saveAs('uploads/' . $filename . '.' . $model->file->extension);
    }
}

You should read this article for more info.

<?php

namespace app\models;
use Yii;
use yii\web\UploadedFile;

class Contracts extends \yii\db\ActiveRecord
{

     public $file;

    public static function tableName()
    {
        return 'uploads_table';
    }


    public function rules()
    {
        return [

            [['file'], 'file'],

        ];
    }


    public function attributeLabels()
    {
        return [

            'file' => 'Files',
        ];
    }

}