File.php 1.54 KB
<?php

namespace common\models;

use Yii;
use yii\web\UploadedFile;

/**
 * This is the model class for table "file".
 *
 * @property integer $file_id
 * @property integer $status
 * @property string $name
 * @property string $dir
 */
class File extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'file';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['status'], 'integer'],
            [['name'], 'string', 'max' => 50],
            [['dir'], 'string', 'max' => 255],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'file_id' => Yii::t('app','file_id'),
            'status' => Yii::t('app','status'),
            'name' => Yii::t('app','name'),
            'dir' => Yii::t('app','dir'),
        ];
    }

    /**
     * @param UploadedFile $file
     * @return file id in model File
     */

    public function saveFile(UploadedFile $file){
        $imgDir = Yii::getAlias('@storage/'.'user_'.\Yii::$app->user->id.'/files/');
        $uploadName = $file->baseName.'_'. time().'.'.$file->extension;
        if(!is_dir($imgDir)) {
            mkdir($imgDir, 0755, true);
        }

        if($file->saveAs($imgDir.$uploadName)){
            $this->dir = '/storage/user_'.\Yii::$app->user->id.'/files/'.$uploadName;
            $this->name = $file->baseName.'.'.$file->extension;
            $this->save();
            return $this->file_id;
        }
    }
}